【发布时间】:2011-05-19 14:20:30
【问题描述】:
我在 STL 中使用了 std::map。我可以在将其他元素插入地图后使用迭代器吗?还有效吗?
【问题讨论】:
我在 STL 中使用了 std::map。我可以在将其他元素插入地图后使用迭代器吗?还有效吗?
【问题讨论】:
如果对容器操作的语义有疑问,请咨询the documentation:
Map 有一个重要的属性,即在
map中插入一个新元素不会使指向现有元素的迭代器失效。从
map中删除元素也不会使任何迭代器失效,当然,实际上指向被删除元素的迭代器除外。
这取自 SGI STL 文档。虽然本文档在技术上并未指定 C++ 标准库容器的行为,但除了不属于 C++ 标准库的 STL 部分之外,这些差异通常是微不足道的。
SGI STL 文档是必不可少的参考资料,尤其是在您没有 C++ 标准副本的情况下。
【讨论】:
从标准 23.1.2/8
插入成员不应影响 迭代器的有效性和 对容器的引用,以及 擦除成员应仅无效 迭代器和对已擦除对象的引用 元素。
【讨论】:
插入 std::map 不会使现有迭代器无效。
【讨论】: