插入到STL映射是否会使其他现有迭代器无效?

Tho*_*son 34 c++ stl

我在STL中使用了std :: map.在将一些其他元素插入地图后,我可以使用迭代器吗?它仍然有效吗?

Jam*_*lis 46

如果对容器上的操作的语义有疑问,请参阅文档:

Map具有重要的属性,即将新元素插入到一个map不会使指向现有元素的迭代器失效.

从a中删除元素map也不会使任何迭代器无效,当然,除了实际指向正在被删除的元素的迭代器之外.

这取自SGI STL文档.虽然本文档在技术上没有指定C++标准库容器的行为,但是除了STL中不属于C++标准库的部分之外,差异通常是微不足道的.

SGI STL文档是必不可少的参考,特别是如果您没有C++标准的副本.

  • +1,SGI文档相当不错.唯一更好的信息来源 - 即使难以阅读 - 是标准.你可以以30美元左右的价格购买自己的标准电子版,或者你可以从google的codeassist [here]下载它(http://openassist.googlecode.com/files/C%2B%2B%20Standard%20-%20ANSI %20ISO%20IEC%2014882%202003.pdf) (5认同)

And*_*nck 29

从标准23.1.2/8

插入成员不应影响迭代器和对容器的引用的有效性,并且擦除成员应仅使迭代器和对已擦除元素的引用无效.


NPE*_*NPE 8

插入std :: map不会使现有迭代器无效.