【发布时间】:2016-02-21 19:40:49
【问题描述】:
换句话说,从映射中存储指向键的指针是否安全?或者地图是否有可能在其生命周期内复制和移动键,从而使现有指针无效?
文档说:“迭代器有效性:没有变化。”这是否意味着我的问题的答案是“不,它们不能被复制或移动”?
【问题讨论】:
标签: c++ dictionary stl std
换句话说,从映射中存储指向键的指针是否安全?或者地图是否有可能在其生命周期内复制和移动键,从而使现有指针无效?
文档说:“迭代器有效性:没有变化。”这是否意味着我的问题的答案是“不,它们不能被复制或移动”?
【问题讨论】:
标签: c++ dictionary stl std
std::map 容器模板提供了一个基于节点的 容器,这意味着容器元素的迭代器和引用永远不会失效,直到从地图中删除该元素。因此,只要地图处于活动状态且元素仍在其中,您就可以将元素关键地址分发给第三方。
【讨论】:
vector::insert 仅使迭代器 before 插入点有效,所以我会说不,这不是可能的。无论如何,如果你擦除另一个元素,最后一个元素的迭代器会发生什么?