std :: list会改变元素记忆中的位置吗?

时间:2013-04-16 00:57:52

标签: c++

如果我通过指针获取对std :: list中元素的引用,只要该元素没有被删除,该指针是否仍然有效,或者每次我想访问时都必须遍历列表元件?

基本上,当添加或删除其他元素时,std :: list会移动元素吗?

我怀疑不是......

2 个答案:

答案 0 :(得分:4)

std::list中的元素的引用和扩展指针在大多数操作中仍然有效,但从容器中删除除外。实际上,它们甚至可以通过merge,splice和swap成员函数移动到另一个列表,它们仍然有效。

答案 1 :(得分:3)

根据C++ referenceinsert()方法对迭代器的有效性没有影响,remove方法只影响已删除元素迭代器的有效性。我怀疑你想保持iterators指向列表中的元素,而不是指针。