Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
Alvin Seville
334 / 266 / 132
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 9
1

Зачем в C++ существуют неконстантные итераторы?

24.12.2018, 05:05. Показов 1118. Ответов 2
Метки нет (Все метки)

Зачем в C++ существуют неконстантные итераторы? Почему было позволено изменять коллекции во время их же перечисления?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.12.2018, 05:05
Ответы с готовыми решениями:

Зачем нужны итераторы?
Практическое использование мне понятно - с их помощью обходят контейнеры и т.д и т.п.Но почему не...

Итераторы: зачем используется оператор инкремента для потоков вывода?
Хотел уточнить зачем используется оператор инкремента для потоков вывода: void main(void) {...

Зачем в C# существуют публичные поля?
Сабж. Собстваенно зачем, если по всевозможным рекомендациям советуют делать автосвойство ...

Зачем существуют проекции фигур на плоскость?
Здравствуйте! Такой чисто философский вопрос, вот в теории сказано что , я вот все не могу понять...

2
2055 / 1533 / 167
Регистрация: 14.12.2014
Сообщений: 13,326
24.12.2018, 05:17 2
Лучший ответ Сообщение было отмечено Соколиный глаз как решение

Решение

Цитата Сообщение от Соколиный глаз Посмотреть сообщение
Почему было позволено изменять коллекции во время их же перечисления?
А сами коллекции изменять как раз и нельзя (во всяком случае искоробочные контейнеры абстракцию "живой коллекции" не поддерживают). Можно изменять только элементы коллекции. И вот именно с этой целью сам обход коллекции и затевается в как минимум половине случаев.
При этом существуют они такие как существуют не в языке С++ а в стандартной библиотеке, которая не более чем заменяемая библиотека.
1
зомбяк
1556 / 1195 / 339
Регистрация: 14.05.2017
Сообщений: 3,882
25.12.2018, 14:09 3
При использовании удаления элементов коллекции перечислитель должен обновляться. Например, std::vector::erase https://en.cppreference.com/w/... ctor/erase возвращает новый итератор на следующий после удалённого элемент контейнера.

Добавлено через 3 минуты
А удалять элементы можно и для константных итераторов. В С++ константность итератора задаёт именно неизменность содержимого элементов, но никак не задаёт неизменность контейнера (это задаётся константностью самого контейнера)
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.12.2018, 14:09

C++: итераторы по умолчанию, пустые итераторы, end()
Всем добра! Вопрос на тему итераторов в плюсах: 1. какие значения имеют итераторы без...

Константные и неконстантные методы в классе
Здравствуйте! Вот задача https://stepik.org/lesson/563/step/6?unit=886 Я наверное не очень...

Итераторы и обратные итераторы
У вектора есть два типа итераторов, обычные и обратные итераторы произвольного доступа... Обычные...

Зачем в .NET в 2014 г. строгая типизация? Зачем нужно писать Convert.ToInt32(), ToString(), Int32.Parse()?
По поводу преобразования. Современный препроцессор кода сам определяет, что куда преобразовывать....

Итераторы
Как привязать итератор к контейнеру, не используя конструткор? Можете привести пример, когда не...

Итераторы
Всем добрый вечер! Есть небольшие затруднения , вот например фрагмент кода: //... ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru