0 / 0 / 0
Регистрация: 28.03.2016
Сообщений: 5
|
||||||||||||||||
1 | ||||||||||||||||
C++: итераторы по умолчанию, пустые итераторы, end()01.11.2017, 15:04. Показов 8498. Ответов 9
Метки нет (Все метки)
Всем добра!
Вопрос на тему итераторов в плюсах: 1. какие значения имеют итераторы без инициализации например,
2. Существуют ли пустые итераторы? (что-то сравнимое
3. на сколько я понимаю, существует итератор с несуществующим значением
Можно ли итератор инициализировать вручную этим значением? Основная делема в том, чтобы хранить итераторы. В разных случаях нужно проверять, ссылается ли хранимый экземпляр итератора на существующий элемент контейнера? При чем, не факт что известного контейнера. Делитесь практикой, как вы это решаете? Заранее благодарен.
0
|
01.11.2017, 15:04 | |
Ответы с готовыми решениями:
9
Итераторы begin и end Реализовать итераторы begin() и end() для списка Итераторы и обратные итераторы Итераторы С++ |
Форумчанин
8216 / 5046 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
01.11.2017, 15:18 | 2 |
Например у std::istream_iterator итератор, созданный конструктором по умолчанию, считается концом ввода.
У всех свой смысл. Надо смотреть подробнее. У std::list<int>::iterator само по себе создание с параметром по умолчанию специального значения не имеет, да и использовать такой итератор не имеет смысла. Что вы вкладываете в это понятие? Итераторы, которые не указывают никуда? Возможно, вы хотите получить что-то, о чём я описал выше с std::istream_iterator? Вы вообще вправе написать свои итераторы и использовать их. И помимо прочего дать им доп. функции и особое значение, когда он не инициализирован. Вопрос только зачем. См выше про std::istream_iterator Добавлено через 48 секунд Только значением конкретного списка std::end(тип std::list<int>), либо тип std::list<int>.end() Добавлено через 21 секунду Обычно это не самая лучшая идея. Добавлено через 53 секунды Слишком много вариантов когда все итераторы превращаются в тыкву (вставка/удаление элементов из контейнера). А если у вас контейнер константный, то не понятно зачем вообще итераторы хранить. Добавлено через 51 секунду Это, кстати, больше походит на булев флаг. Возможно, вам стоит хранить и проверять его.
1
|
0 / 0 / 0
Регистрация: 28.03.2016
Сообщений: 5
|
|
01.11.2017, 19:50 [ТС] | 3 |
Спасибо, довольно развернуто.
У меня есть функция(в STL подобные кстати тоже есть), она возвращает итератор. Хочу обрабатывать там исключения, для этого необходимо оттуда возвращать пустой итератор(или типа того) и ловить её в месте вызова функции, чтобы потом можно было сравнивать его на пустоту. Как лучше это написать по вашему?
0
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|
02.11.2017, 01:26 | 5 |
Гарантируется для всех ForwardIterator.
0
|
0 / 0 / 0
Регистрация: 28.03.2016
Сообщений: 5
|
||||||
03.11.2017, 20:19 [ТС] | 6 | |||||
Искючения - отдельно. Мне нужно просто сравнить на Пустой итератор, делаю это так:
0
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|
04.11.2017, 03:23 | 7 |
Так и сравнивать - it==list<Note>::iterator(). Повторяю, корректность гарантируется для всех forward iterator. А у листа итераторы bidirectional, что включает в себя forward.
0
|
0 / 0 / 0
Регистрация: 28.03.2016
Сообщений: 5
|
|
04.11.2017, 04:16 [ТС] | 8 |
Renji,
Крайний вопросец, существует ли унифицированная форма пустого итератора? Можно ли сравнивать list::iterator() с map::iterator()? Спецификацию читать не хочется ради мелочи. Думаю если кто знает - всем будет полезно.
0
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|
04.11.2017, 05:47 | 9 |
Сообщение было отмечено tm-green как решение
Решение
Нет, такого точно нельзя. Возможность сравнения гарантированна только для однотипных итераторов.
0
|
0 / 0 / 0
Регистрация: 28.03.2016
Сообщений: 5
|
|
04.11.2017, 06:27 [ТС] | 10 |
Всем спасибо! Тему можно закрывать.
0
|
04.11.2017, 06:27 | |
04.11.2017, 06:27 | |
Помогаю со студенческими работами здесь
10
итераторы си++ Итераторы Итераторы в C++ Итераторы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Элементы алгоритмизации
hw_wired 28.01.2025
Основы алгоритмизации
В современном мире алгоритмы играют фундаментальную роль в развитии информационных технологий и программирования. Понимание основ алгоритмизации является ключевым элементом в. . .
|
Человек и информация
hw_wired 28.01.2025
Введение: роль информации в познании мира
В современном мире информация играет фундаментальную роль в процессе познания окружающей действительности. Она представляет собой совокупность сведений об. . .
|
Компьютер и информация
hw_wired 28.01.2025
Эволюция вычислительных машин
История развития вычислительной техники начинается задолго до появления первых электронных устройств. Человечество всегда стремилось упростить процесс вычислений и. . .
|
Информационные технологии
hw_wired 28.01.2025
Введение в современные технологии работы с информацией
В современном мире информационные технологии стали неотъемлемой частью практически всех сфер человеческой деятельности. Они существенно. . .
|
Информация вокруг нас
hw_wired 28.01.2025
Основные понятия информации
В современном мире понятие информации является фундаментальным и охватывает практически все сферы человеческой деятельности. Информация представляет собой совокупность. . .
|
Компьютер для начинающих
hw_wired 28.01.2025
Введение в мир компьютерных технологий
В современном мире информация стала одним из важнейших ресурсов человечества, определяющим развитие общества и технологий. Наша жизнь неразрывно связана с. . .
|
[golang] 189. Rotate Array
alhaos 28.01.2025
Повороты рукоятки, целочисленный слайс нужно сдвинуть на целое положительное число. Мне очень нравится решение на GO
/ / https:/ / leetcode. com/ studyplan/ top-interview-150/
package topInterview
. . .
|
КуМир: решение задач на матрицы
bytestream 28.01.2025
КуМир представляет собой среду для обучения программированию, которая включает в себя мощные инструменты для работы с матрицами. Матрица в программировании - это двумерный массив, состоящий из. . .
|
КуМир: решение задач на строки
bytestream 28.01.2025
В системе программирования КуМир работа со строковыми данными является одним из важнейших аспектов создания программ. Строки представляют собой последовательности символов, заключенные в кавычки,. . .
|
КуМир: решение геометрических задач
bytestream 28.01.2025
Программирование геометрических задач в среде КуМир становится всё более актуальным в обучении школьников и студентов. КуМир — это разработанная в России обучающая программная среда, предназначенная. . .
|
КуМир, исполнитель Водолей: Задачи и решения
bytestream 28.01.2025
КуМир — это образовательная среда для обучения программированию. Она предлагает пользователям разнообразные инструменты для разработки и отладки программ, что особенно ценно для студентов и. . .
|
КуМир, исполнитель Чертежник: Решение задач
bytestream 28.01.2025
КуМир (Комплект Учебных МИРов) представляет собой образовательную среду для обучения основам программирования и алгоритмизации.
Исполнитель Чертежник работает на координатной плоскости, где может. . .
|