【发布时间】:2014-11-11 14:40:53
【问题描述】:
我有一个const std::map<std::string, std::vector<double>> 成员变量和一个函数const std::vector* foo()。我希望这个函数有时会返回一个指向该地图元素的指针。但我担心地图可能会重新平衡 - 即使在标记为 const 的 std::map 函数期间 - 所以会使我返回的指针无效。我知道以后对地图的任何修改都会使我的指针失效,但这不会发生,因为我已经标记了成员变量const。
我无法返回引用,因为 foo 需要返回 nullptr。
我所做的安全吗?
【问题讨论】:
-
如果 map 对象本身是 const 的,那么初始化后什么会导致它重新平衡?
-
只有被擦除元素的迭代器才会失效(
map),插入不会影响当前的迭代器;因此即使它确实重新平衡(但它是const,所以我不确定它是否能做到这一点),迭代器仍然有效。 -
@NeilKirk:这基本上就是他要问的!
标签: c++