Итератор не должен быть неявно преобразован в const_iterator
Итератор не должен быть неявно преобразован в const_iterator.
C++ 11 стандартов вводит функции членства, такие как cbegin и cend это возвращает итераторы const в контейнеры. Чтобы создать итераторы const, используйте эти функции членства вместо функций, таких как begin и end тот неconst возврата итераторы и затем требует неявных преобразований.
Например, рассмотрите std::list контейнер:
std::list<int> aList = {0, 0, 1, 2};begin и end функции членства контейнера, чтобы создать итераторы const, например, в for цикл:for(std::vector<int>::const_iterator iter{aList.begin()}, end{aList.end()};
iter != end;
++iter) {...}begin и end возвратите итераторы неconst и для присвоения на итераторы const iter и end соответственно, неявное преобразование должно произойти. Вместо этого используйте в своих интересах новый C++ 11 функций cbegin и cend это непосредственно возвращает итераторы const:for(std::vector<int>::const_iterator iter{aList.cbegin()}, end{aList.cend()};
iter != end;
++iter) {...}auto:for(auto iter{aList.cbegin()}, end{aList.cend()};
iter != end;
++iter) {...}Средство проверки отмечает преобразования из типа iterator к const_iterator или reverse_iterator к const_reverse_iterator.
Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.
| Группа: вспомогательная библиотека Языка |
| Категория: необходимый, автоматизированный |