谁能告诉我函数在容器(例如Type&
)中返回元素的引用(例如boost::unordered_map
)是否安全?
如果可以,为什么?因为我认为引用类型的工作方式与指针相同(如果我错了,请纠正我),并且容器中某个元素的内存地址可能会随着时间而改变,因此如果被引用,则不再是以前的内容。我对吗?
如果可以,是否可以返回容器中某个元素的指针?
我有这个问题,因为我看到这发生在其他人的代码中,并且效果很好...
最佳答案
这取决于。
只要容器从未被修改过,它就很好。如果对容器进行了修改,则每个容器类都有自己的规则,关于何时对现有元素的引用无效。
C ++标准是查找规则的官方方法,但是在大多数情况下,您可以放心地阅读优质的在线参考(无双关语),例如http://cppreference.com。例如,我们了解到std::vector::insert
肯定会使对所有后续元素的引用无效,并且可能使对所有元素的引用无效。
关于c++ - 关于容器中元素的引用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15177111/