Это вряд ли идиоматично, поскольку новый стандарт даже не сработает!

варьировались-за в C ++ 11 будет очень лаконичным и полезным, конечно. Насколько я понимаю, как это работает, он ищет "контейнеры"begin а такжеend пытаясь * аргумент-зависимый-поиск "(ADT).

Но еще одним дополнением является то, что все контейнерытеперь естьcbegin() а такжеcend() чтобы получитьconst_iterators для контейнера.

Я немного смущен, с одной стороны, я думаю, что я должен использоватьcbegin() если я сделаюне хочу изменить контейнер, с другой стороны, я должен добавить дополнительныйconst внутриварьировались-за чтобы получить то же самое.

Итак, это выглядит так:

// print all
for(const auto elem : data)
  cout << elem

используя ADT, найдя data.begin (), таким образомconst&nbsp;необходимо.

против

// print everything but the first (a reason not to use range-for)
for(auto it = data.cbegin()+1; it!=data.cend(); ++it)
  cout << *it

с помощьюdata.cbegin()Таким образом, нетconst&nbsp;необходимо.

Но не будет ли это более «идиоматическим»?

// print everything but the first (a reason not to use range-for)
for(const auto it = data.begin()+1; it!=data.end(); ++it)
  cout << *it
Я правильно понял "идиому"? Есть дополнения?Когда я должен использоватьcbegin?Я скучаю по чему-то с дальнобойным, ищуbegin()&nbsp;только?

Редактировать:&nbsp;исправление ошибкиЗначение против итератора