Рубрика "Сломай нейронку". Опасные итераторы)

Рубрика "Сломай нейронку". Опасные итераторы)
0
Автор поста оценил этот комментарий

Я тоже чёт не понял. Сначала контейнер перестраивается, потом итератор создается

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Ну о том и вопрос, что когда он создаётся заново внутри метода erase то учитывается ли что при перестроении ранее не итерированное могло улететь "слева" от нового итератора

0
Автор поста оценил этот комментарий

Тем более по словарю, он не во всех языках упорядоченный.


Вы создали итератор, дошли до куда-то, что-то удалили, создали новый итератор. Откуда новый итератор знает, что вы делали до этого со старым и с вашей коллекцией?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Кстати я в onlinegdb проверил, erase никак не на начало возвращает итератор:


#include <iostream>

#include <map>

int main()

{

std::map<int, char> MyMap = {

{1, 'a'},

{4, 'n'},

{7, 't'},

{2, 'b'}

};

auto iter = MyMap.begin();

for(auto i = iter; i != MyMap.end(); i++)

std::cout<<(*i).first<<" "<<(*i).second<<"\r\n";

std::cout<<"\r\n";

++iter;

auto iter_new = MyMap.erase(iter);

for(auto i = iter_new; i != MyMap.end(); ++i)

std::cout<<(*i).first<<" "<<(*i).second<<"\r\n";

return 0;

}


выдаёт:


1 a

2 b

4 n

7 t


4 n

7 t

Иллюстрация к комментарию
0
Автор поста оценил этот комментарий

Надо сначала делать remove потом erase. https://en.wikipedia.org/wiki/Erase-remove_idiom


Или std::erase_if из нового стандарта.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Надо сначала делать remove потом erase. https://en.wikipedia.org/wiki/Erase-remove_idiom

так это с векторами, а у меня мапа, выше писал

Или std::erase_if из нового стандарта.

хорошая штука, посмотрю, спасибо

0
Навсегда
Автор поста оценил этот комментарий

Дип Сик не пробовал?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Это что?

показать ответы
0
Автор поста оценил этот комментарий

Тем более по словарю, он не во всех языках упорядоченный.


Вы создали итератор, дошли до куда-то, что-то удалили, создали новый итератор. Откуда новый итератор знает, что вы делали до этого со старым и с вашей коллекцией?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Знает по идее функция erase которая и возвращает новый итератор, ну по крайней мере хочется надеяться что она при удалении элемента если перестраивает дерево то и новый итератор возвращает такой чтобы уже пройденные по старому итератору элементы не проходить заново

показать ответы
0
Автор поста оценил этот комментарий

новый итератор? С чего бы ему показывать куда-то в середину коллекции (для простоты я сейчас про обычный список говорю, не про какое-нибудь неупорядоченное множество).

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Ну вот у меня вопрос для чата гопоты изначально был про итератор по мапе

показать ответы
0
Автор поста оценил этот комментарий

странный какой-то вопрос. Разумеется, новый итератор будет показывать на начало коллекции и все встреченные ранее элементы снова встретятся.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Разве на начало? По идее он должен сразу после удаляемого указывать не?

показать ответы

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества