【发布时间】:2011-07-08 02:47:10
【问题描述】:
给定一个非连续的 STL 容器(你也可以考虑 boost::unordered_map 和 boost::multi_index_container),如果没有元素被删除,是否保证容器内元素的内存地址永远不会改变,(但可以添加新的)?
例如
class ABC { };
//
//...
//
std::list<ABC> abclist;
ABC abc;
abclist.insert(abc);
ABC * abc_ptr = &(*abclist.begin());
换句话说,如果我不从abc_list 中删除abc,那么在整个执行过程中abc_ptr 将被指向abc。
我问这个是因为我要在 C++/Cli 中包装类 ABC,所以我需要指向包装类中的 ABC 实例的指针。 ABC 是一个简单的类,我希望容器来处理内存。如果答案是否定的,那么我将使用std::list<ABC*>。
【问题讨论】:
标签: c++ pointers stl memory-address