谁能告诉我函数返回Type&
容器(例如)中元素的引用(即)是否安全boost::unordered_map
?
如果我们可以这样做,为什么?因为我认为引用类型的工作方式和指针一样(如果我错了请纠正我),并且容器中元素的内存地址可能会随着时间的推移而改变,所以如果引用不再是以前的样子怎么办。我对吗?
如果可以,我们可以返回容器中元素的指针吗?
我有这个问题是因为我看到这发生在其他人的代码中,它工作得很好......
谁能告诉我函数返回Type&
容器(例如)中元素的引用(即)是否安全boost::unordered_map
?
如果我们可以这样做,为什么?因为我认为引用类型的工作方式和指针一样(如果我错了请纠正我),并且容器中元素的内存地址可能会随着时间的推移而改变,所以如果引用不再是以前的样子怎么办。我对吗?
如果可以,我们可以返回容器中元素的指针吗?
我有这个问题是因为我看到这发生在其他人的代码中,它工作得很好......
这取决于。
完全没问题,只要容器从未被修改过。如果容器被修改,那么每个容器类都有自己的规则来决定对现有元素的引用何时失效。
C++ 标准是查找规则的官方方法,但在大多数情况下,您可以安全地阅读良好的在线参考(没有双关语),例如http://cppreference.com。例如,我们知道这std::vector::insert
肯定会使对所有后续元素的引用无效,并且可能会使对所有元素的引用无效。