Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Dll com-совместимая https://www.cyberforum.ru/ cpp-beginners/ thread381588.html
Подскажите пожалуйста, как в реализации обычная dll отличается от com-совместимой dll?
C++ Timer начало змейки
Есть таймер и есть label1 таймер включен в таймере прописано Label1->Left= Left +1; и в результате Label1 перемещаетья примерно на 5 сантиметров влево и все, больше не двигается в чем...
C++ DbLookUpComboBox
Есть Datasource2 ADOQuery2 , DbLookUpComboBox и база данных в которой 2 параметра это Surname и код (ключевое поле) в свойствах выбрано : в DataSource2 : DataSet-> ADOQuery2 в ...
C++ Возведение в степень Дано число n и его нужно возвести в степень s. Можно ли это как-то сделать не используя циклы. Заранее спасибо... https://www.cyberforum.ru/ cpp-beginners/ thread381574.html
C++ перегрузка операторов https://www.cyberforum.ru/ cpp-beginners/ thread381571.html
Имеется такая программа: class reversion { vector<int> mass1; vector<int> mass2; vector<int> rev1; vector<int> rev2; vector<int> mult1; vector<int> mult2;
и снова строки C++
Написать программу считывающую текст и выводящую слова, начинающиеся с гласной буквы.
C++ Абсолютная разность углов.
Здравствуйте! Как найти минимальную разность углов? double alpha = 3,14159; double alpha2 = 175,12359; //double difference = ? Имеется в виду, что есть значение одного угла и второго, и...
C++ Вывести на экран слова перед которыми стоят запятая и пробел. Вывести на экран слова перед которыми стоят запятая и пробел. Не могу понять как ее реализовать чайниг в этом деле) Добавлено через 6 минут int main() { char c; int k ; ... https://www.cyberforum.ru/ cpp-beginners/ thread381552.html
C++ Удалить из списка все элементы с нечётными значениями и вывести указатель p2 на начало преобразованного списка. https://www.cyberforum.ru/ cpp-beginners/ thread381546.html
Здравствуйте. Не получается решить задачу. Условие. Дан непустой двусвязный список. Удалить из списка все элементы с нечётными значениями и вывести указатель p2 на начало преобразованного ...
C++ Разработать программу удаления в тексте, содержащемся в файле, лишних пробелов. Разработать программу удаления в тексте, содержащемся в файле, лишних пробелов. https://www.cyberforum.ru/ cpp-beginners/ thread381543.html
~ Эврика! ~
1253 / 1002 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
31.07.2012, 12:50 0

Инкремент невалидного итератора

31.07.2012, 12:50. Просмотров 1875. Ответов 18
Метки (Все метки)

Ответ

Цитата Сообщение от John Prick Посмотреть сообщение
Вот только не понятно, что здесь значит "не применяется"?
Вы б читали внимательнее.
> Каждый массив в Си имеет один указатель, указывающий за его конец. Его нельзя разыменовывать [...]
Его — указатель, указывающий за конец массива.

Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Но можно по аналогии с указателем ответить. Указатель просто инкрементируется. А итератор - это абстрактный указатель (в стандарте так написано)... Сделан по аналогии с указателем. Значит и поведение должно быть аналогичное...
А теперь хотите загадку? У меня есть итератор по связному списку. Как он работает и откуда берёт указатель на следующий элемент, вы себе представляете. Итератор остановился посередине списка. Я удаляю список. Теперь итератор для перемещения вперёд должен обратиться к памяти, которая не принадлежит программе, что есть UB.

В стандарте вроде бы достаточно очевидно написано про UB (lib.iterator.requirements + предусловия для всех инкрементов того, чтобы итератор был разыменовываемым).

Другое дело, что UB — это не требование форматировать диски и пулять ракетами по Пентагону. Это только значит, что поведение оставляется на усмотрение реализации, а она вольна творить, что ей хочется: сообщать об ошибке, ничего не ломать или форматировать диски. Хороший итератор ругнётся, если он инвалидный.

Вернуться к обсуждению:
Инкремент невалидного итератора
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.07.2012, 12:50
Готовые ответы и решения:

Валидность итератора
Допустимо ли делать такие проверки? Код то отрабатывает, но можно ли так делать? ...

Проверка итератора
как проверить указывает ли на что либо итератор или он уже неправильный?

реализация итератора
Реализация класса List и его итератора: #ifndef LIST_H #define LIST_H #include&lt;iostream&gt; ...

Разыменование итератора
Делаю предикат-функцию поиска внутри вектора,состоящего из экземпляров класса.Решил использовать...

18
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.