Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Студент
121 / 132 / 39
Регистрация: 07.04.2011
Сообщений: 503
1

Валидность итератора

07.01.2015, 20:47. Просмотров 995. Ответов 4
Метки нет (Все метки)

Допустимо ли делать такие проверки? Код то отрабатывает, но можно ли так делать?
C++
1
2
3
4
5
6
7
8
std::vector<int> vec = {1, 2, 3, 4, 5};
auto it = vec.begin();
 
--it;
 
if (it == (--vec.begin())) {
  std::cout << "End" << std::endl;
}
Нужно отматать от средины массива к началу, включая первый елемент, но reverse итератор в задаче не доступен.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.01.2015, 20:47
Ответы с готовыми решениями:

Утечка памяти или что? Валидность итератора
вообщем падает задача через раз, вроде бы в 44 строке, вместо str+= надо бы по идее метод...

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

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

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

4
13475 / 7138 / 1712
Регистрация: 30.01.2014
Сообщений: 11,941
07.01.2015, 20:53 2
Цитата Сообщение от MickeyBlueEyes Посмотреть сообщение
Допустимо ли делать такие проверки?
Нет, это UB.
1
Модератор
Эксперт С++
9800 / 8363 / 5090
Регистрация: 18.12.2011
Сообщений: 22,371
07.01.2015, 20:56 3
У vector итератор с произвольным доступом.
но за начало вылезать нельзя.
т.е. к vec.begin() можете прибавить сколько угодно в пределах размера
или от vec.end() отнять сколько угодно. но тоже в пределах текущего размера.
1
2818 / 1628 / 252
Регистрация: 03.12.2007
Сообщений: 4,223
07.01.2015, 20:59 4
Цитата Сообщение от MickeyBlueEyes Посмотреть сообщение
но reverse итератор в задаче не доступен
В смысле? Из обычного (bidirectional, конечно) всегда же можно сделать reverse.
1
Студент
121 / 132 / 39
Регистрация: 07.04.2011
Сообщений: 503
07.01.2015, 21:12  [ТС] 5
Цитата Сообщение от Somebody Посмотреть сообщение
Из обычного (bidirectional, конечно) всегда же можно сделать reverse.
Я слоупок незнал ) Робит всё thx всем.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.01.2015, 21:12

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Упрощенная реализация итератора
- Доброго дня завсегдатаи ! Видел на Вашем форуме упрошенную реализацию контейнера std::vector. ...

Ошибка в объявлении итератора
Пытаюсь создать класс deque на основе класса vector. Создал итераторы для deque(все работало)...

Инкремент невалидного итератора
Привет. Этот вопрос задали знакомому на собеседовании... Что произойдет при инкременте...

Ошибка в классе итератора
В общем, решил я написать для своего класса, реализующего двунаправленный список, написать...


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

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

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