首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >指向STL容器元素的指针

指向STL容器元素的指针
EN

Stack Overflow用户
提问于 2011-03-03 22:37:10
回答 2查看 9.2K关注 0票数 21

给定一个不连续的STL容器(您也可以考虑boost::unordered_mapboost::multi_index_container ),如果没有删除任何元素(但可以添加新的元素),是否可以保证容器内元素的内存地址永远不会改变?

例如:

代码语言:javascript
复制
class ABC { };
//
//...
//
std::list<ABC> abclist;
ABC abc;
abclist.insert(abc);
ABC * abc_ptr = &(*abclist.begin());

换句话说,如果我不从abc_ptr中删除abc,那么在整个执行过程中,abc_list会被指向abc吗?

我之所以这样问,是因为我要用C++/Cli包装类ABC,因此我需要指向包装器类中ABC实例的指针。ABC是一个简单的类,我想让容器来处理内存。如果答案是否定的,那么我将使用std::list<ABC*>

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-03 22:42:28

std::setstd::map保证迭代器(包括简单指针)在添加甚至删除新元素时不会失效。

票数 30
EN

Stack Overflow用户

发布于 2011-03-03 22:57:22

正如Armen提到的,std::list、std::set和std::map只能使已删除的迭代器无效。在boost::unodered_map的情况下,修饰符确实可能使迭代器无效。

http://www.boost.org/doc/libs/1_38_0/doc/html/boost/unordered_map.html

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5182122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档