C++ 地图:它能在插入关键点后复制和移动它们吗?

C++ 地图:它能在插入关键点后复制和移动它们吗?,c++,dictionary,stl,std,C++,Dictionary,Stl,Std,换句话说,从地图上存储指向键的指针安全吗?或者地图是否可能在其生命周期内复制和移动关键点,从而使现有指针无效 文档说:“迭代器有效性:无更改。”这是否意味着我的问题的答案是“不,它们不能被复制或移动”std::map容器模板提供了一个基于节点的容器,这意味着迭代器和对容器元素的引用在从映射中删除之前不会失效。因此,您可以将元素密钥地址分发给第三方,只要映射处于活动状态且元素仍在其中。太好了,感谢您的澄清。您是否碰巧知道这在文档中的指定位置?如果实现使用基于索引的迭代器来保证有效性,但实际元素在内

换句话说,从地图上存储指向键的指针安全吗?或者地图是否可能在其生命周期内复制和移动关键点,从而使现有指针无效


文档说:“迭代器有效性:无更改。”这是否意味着我的问题的答案是“不,它们不能被复制或移动”

std::map容器模板提供了一个基于节点的容器,这意味着迭代器和对容器元素的引用在从映射中删除之前不会失效。因此,您可以将元素密钥地址分发给第三方,只要映射处于活动状态且元素仍在其中。

太好了,感谢您的澄清。您是否碰巧知道这在文档中的指定位置?如果实现使用基于索引的迭代器来保证有效性,但实际元素在内存中移动,那么这是否无效?如果没有,说明在哪里?@Chris:[associative.reqmts]/9@6502:参见前面的注释。我不确定它是否在任何地方说允许“保持迭代器有效”,但更改它指向的元素。请注意,例如,具有足够容量的
vector::insert
只能使迭代器在插入点之前保持有效,因此我会说不,这是不可能的。在任何情况下,如果删除另一个元素,最后一个元素的迭代器会发生什么情况?@6502-[associative.reqmts]/9:“插入和放置成员不得影响迭代器和对容器的引用的有效性,并且删除成员应仅使迭代器和对已删除元素的引用无效。”(强调添加)。