如果我通过指针获取对std :: list中元素的引用,只要该元素没有被删除,该指针是否仍然有效,或者每次我想访问时都必须遍历列表元件?
基本上,当添加或删除其他元素时,std :: list会移动元素吗?
我怀疑不是......
答案 0 :(得分:4)
std::list
中的元素的引用和扩展指针在大多数操作中仍然有效,但从容器中删除除外。实际上,它们甚至可以通过merge,splice和swap成员函数移动到另一个列表,它们仍然有效。
答案 1 :(得分:3)
根据C++ reference,insert()
方法对迭代器的有效性没有影响,remove
方法只影响已删除元素迭代器的有效性。我怀疑你想保持iterators指向列表中的元素,而不是指针。