c++ - 指向 STL 容器元素的指针

标签 c++ pointers stl memory-address

给定一个非连续的 STL 容器(您也可以考虑 boost::unordered_mapboost::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::liststd::setstd::map 保证迭代器(包括简单指针)不会在添加甚至删除新元素时失效。

关于c++ - 指向 STL 容器元素的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5182122/

相关文章:

c - 这两个指针别名如何?

c++ - 根据多个条件处理 map 中的所有元素

c++ - 使用 C++ 类方法作为函数回调

c++ - 声明一个指向 void* 二维数组的指针

c++ - 通过别名定义前向定义的 C++ 结构

c - C中的链表程序挂了

c++ - 在 C++03 中将成员函数传递给 for_each(没有提升,没有 c++11)

在结构中声明 vector 时,C++ 不是类型错误

c++ - 工厂方法设计模式和桥接模式有什么区别?

c++ - OpenGL GL_TEXTURE1 不显示