谁能告诉我函数在容器(例如Type&)中返回元素的引用(例如boost::unordered_map)是否安全?

如果可以,为什么?因为我认为引用类型的工作方式与指针相同(如果我错了,请纠正我),并且容器中某个元素的内存地址可能会随着时间而改变,因此如果被引用,则不再是以前的内容。我对吗?

如果可以,是否可以返回容器中某个元素的指针?

我有这个问题,因为我看到这发生在其他人的代码中,并且效果很好...

最佳答案

这取决于。

只要容器从未被修改过,它就很好。如果对容器进行了修改,则每个容器类都有自己的规则,关于何时对现有元素的引用无效。

C ++标准是查找规则的官方方法,但是在大多数情况下,您可以放心地阅读优质的在线参考(无双关语),例如http://cppreference.com。例如,我们了解到std::vector::insert肯定会使对所有后续元素的引用无效,并且可能使对所有元素的引用无效。

关于c++ - 关于容器中元素的引用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15177111/

10-11 18:04