0

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

如果我们可以这样做,为什么?因为我认为引用类型的工作方式和指针一样(如果我错了请纠正我),并且容器中元素的内存地址可能会随着时间的推移而改变,所以如果引用不再是以前的样子怎么办。我对吗?

如果可以,我们可以返回容器中元素的指针吗?

我有这个问题是因为我看到这发生在其他人的代码中,它工作得很好......

4

1 回答 1

2

这取决于。

完全没问题,只要容器从未被修改过。如果容器修改,那么每个容器类都有自己的规则来决定对现有元素的引用何时失效。

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

于 2013-03-02T17:07:46.180 回答