给定一个非连续的 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_ptr
指向abc
在整个执行过程中,如果我不删除 abc
来自 abc_list
.
我问这个是因为我要包装类 ABC
在 C++/Cli 中,所以我需要指向 ABC
的指针包装类中的实例。 ABC 是一个简单的类,我希望容器来处理内存。如果答案是否定的,那么我将使用 std::list<ABC*>
.
最佳答案
std::list
、std::set
和 std::map
保证迭代器(包括简单指针)不会在添加甚至删除新元素时失效。
关于c++ - 指向 STL 容器元素的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5182122/