Есть ли способ использовать автономный `std :: begin` и для const_iterator?

Мне нравится последовательность. Я недавно задал вопрос об использовании std::begin против например std::vector<int>::beginи единогласное решение, похоже, заключалось в том, чтобы использовать первое, поскольку оно носит более общий характер. Но я думаю, что нашел в грязи палку. Иногда, вы хотите передать, что вы не будете менять контейнер во время его цикла, следовательно, вызывая std::vector<int>::cbegin, Это сделало бы ваш код довольно асимметричным, если бы вы иногда делали iter = v.cbegin() и другие времена сделали iter = begin(v), Есть ли способ обойти это отсутствие симметрии, и вы все равно порекомендуете std::begin учитывая это знание? Почему C ++ не имеет std::cbegin?

9

Решение

C ++ 14 имеет cbegin/cend/так далее. и он начинает быть доступен в основных компиляторах.

40

Другие решения

Например, когда ваш контейнер объявлен как «const», он передается функции как foo(const std::vector<int> & v), затем std::begin на самом деле вернет const_iterator,

3

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector