0 / 0 / 0
Регистрация: 15.05.2015
Сообщений: 17
1

Ошибка Expression: map/set iterator not dereferencable

29.11.2017, 18:46. Показов 4731. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Мне нужно вывести контейнер map в обратном порядке. Делаю следующим образом:
C++
1
2
3
for (multimap<double, int>::iterator i = sorted.end(), e = sorted.begin(); i != e; --i) {
    cout << "file" << i->second << " " << i->first << endl;
}
Получаю ошибку "map/set iterator not dereferencable". Нагуглил, что это происходит при попытке обращения к итератору end либо к пустому контейнеру. Контейнер у меня гарантированно не пуст, а к end, если я правильно понимаю суть декремента, он обратиться не может, ведь от i перед первой же итерацией происходит --.
Тем не менее, попробовал написать так:
C++
1
2
3
4
5
for (multimap<double, int>::iterator i = sorted.end(), e = sorted.begin(); i != e; --i) {
    if (i != sorted.end()) {
        cout << "file" << i->second << " " << i->first << endl;
    }
}
Вывелся весь контейнер за исключением первого элемента.
Собственно, вопросы: почему в первом варианте кода происходит обращение к end, а во втором не выводится первый элемент в контейнере?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.11.2017, 18:46
Ответы с готовыми решениями:

map/set iterator not dereferencable
map&lt;string,int&gt; optimized(map&lt;string,int&gt;&amp;dict){ map&lt;string,int&gt;::iterator i=dict.begin();...

Map/set iterator not dereferencable
Всем доброго времени суток. Суть задания в том, чтобы удалить повторы комбинаций чисел в...

Map/set iterator not dereferencable
Есть два класса, первый: class AnimationManager { public: String currentAim;...

Map/set!( iterator not dereferencable)
Есть функция,в которой происходит поиск в map по ключу. Если по данному ключу нет значения, то...

1
1550 / 875 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
29.11.2017, 19:44 2
Цитата Сообщение от Random User Посмотреть сообщение
ведь от i перед первой же итерацией происходит --
Не происходит.
Цитата Сообщение от Random User Посмотреть сообщение
а во втором не выводится первый элемент в контейнере?
Потому, что когда i становится равным begin() происходит выход из цикла.

Если хотите перебрать эдементы в обратном порядке:
C++
1
for(auto it=sorted.rbegin(); it!=sorted.rend(); it++) { ...
1
29.11.2017, 19:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.11.2017, 19:44
Помогаю со студенческими работами здесь

Ошибка list iterator not dereferencable
Ошибка при использовании итератора. Хэлп, сос :cry: void client_login(list&lt;client&gt; client_list)...

Expression:map/set incompatible
Подскажите пожалуйста почему происходит ошибка в этом коде: set&lt;int&gt; S;...

Expression:map/set incompatible
Не могу понять почему возникает ошибка дело в том что данный код работает set&lt;int&gt; Multic;...

Ошибка "iterator not dereferencable" при использовании ссылки
Всем привет. Без ссылки все работает, с ссылкой ошибка: &quot;iterator not dereferencable&quot;. С...


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

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

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