Я использовал std :: map в STL. Могу ли я использовать итератор после того, как какой-либо другой элемент вставлен в карту? Это все еще актуально?Вставляет ли в карту STL недействительность другого существующего итератора?
ответ
Если вы сомневаетесь в семантике операции на контейнере, обратитесь the documentation:
Карта имеет важное свойство, вставляя новый элемент в
map
не аннулирует итераторы, которые указывают на существующие элементы.Удаление элемента из
map
также не отменяет никаких итераторов, за исключением, конечно, для итераторов, которые фактически указывают на стираемый элемент.
Это взято из документации SGI STL. Хотя эта документация технически не указывает поведение контейнеров стандартной библиотеки C++, различия, как правило, незначительны, но, конечно же, помимо частей STL, которые не являются частью стандартной библиотеки C++.
Документация SGI STL является незаменимой ссылкой, особенно если у вас нет копии стандарта C++.
Вставка в std :: map не отменяет существующих итераторов.
От стандартного 23.1.2/8
Члены вставки не должны влиять на действительности итераторов и ссылки на контейнер, и членов стирают аннулируют только итераторы и ссылки на стертый элементов.
- 1. Что такое недействительность итератора?
- 2. Каков тип итератора в STL?
- 3. Настройка класса итератора STL
- 4. Как устанавливается равенство итератора STL?
- 5. Простой экземпляр итератора ST ++ STL
- 6. отношение stl-итератора и массива
- 7. разыменования итератора из STL набор
- 8. Путать использование C++ STL итератора
- 9. Полезно ли индексировать карту STL с парой?
- 10. Возвращение итератора к элементу в контейнере STL
- 11. Могу ли я напечатать карту STL с соиЬ вместо петли итератора
- 12. Ошибка в описании итератора в STL карте
- 13. Получение поля из STL карты итератора
- 14. Минимальная функциональность для пользовательского итератора, полученная непублично из STL-итератора?
- 15. unordered_map итератор недействительность
- 16. Разная эффективность итератора и const_iterator (STL)
- 17. Вставляет ли метод STL значение копии переданных объектов?
- 18. Итератор STL: «разыгрывание» итератора на временный. Является ли это возможным?
- 19. Создание нового Итератора из результатов другого Итератора
- 20. Есть ли эквивалент C# для итератора вывода STL?
- 21. Функция кодирования итератора для STL-класса
- 22. Могу ли я легко переопределить категорию (it) итератора (STL)?
- 23. STL SET Назначение итератора нет жизнеспособного кандидата
- 24. Проблемы с использованием итератора карты STL при удалении элементов
- 25. Получение Итератора для внутреннего контейнера STL?
- 26. Есть ли структура в Python, похожая на C++ STL-карту?
- 27. STL вектор итератора дает дамп ядра
- 28. Является ли Iterable # iterator() возвратом нового итератора или существующего?
- 29. Проблема с копированием итератора карты STL
- 30. Создание stl-вектора из пары итератора C++
+1, документы SGI неплохие. Стандартным является только лучший источник информации - даже если его труднее читать. Вы можете купить свою электронную копию стандарта примерно за 30 долларов США, или вы можете загрузить ее из кодекса Google [здесь] (http://openassist.googlecode.com/files/C%2B%2B%20Standard%20-%20ANSI % 20ISO% 20IEC% 2014882% 202003.pdf) – 2010-12-03 09:20:32