c++ - 可以安全地存储 list::iterator 供以后使用吗?

标签 c++ list stl iterator

假设我有一个列表,其中没有添加或删除新节点。但是,节点可能会被打乱。

保存一个迭代器,指向列表中的一个节点,并在以后任意时间访问它是否安全?

编辑(后续问题): list::splice() 的文档说它从参数列表中删除元素。这是否意味着如果我调用 splice,使用相同的列表作为函数的参数,现有的迭代器将失效?

最佳答案

是的。
迭代器进入列表的标准受赠者不会失效,除非他们指向(比喻地说)的项目从列表中删除。

从这个页面:http://www.sgi.com/tech/stl/List.html

Lists have the important property that insertion and splicing do not
invalidate iterators to list elements, and that even removal invalidates
only the iterators that point to the elements that are removed.

关于c++ - 可以安全地存储 list::iterator 供以后使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/837267/

相关文章:

c++ - 将包含不可复制/可移动对象的结构添加到 std::map

c++ - 如何在CLion的问题窗口中查看编译器错误?

c++ - 如何将 aurioTouch 文件添加到自定义程序?

java - 从字符串数组中删除第一个字符串android studio

objective-c - 尝试在 objective-c 程序中使用 std::list

c++ - 如何使用 begin() 自由函数

c++ - 字符串中的最大重复词

c++ - 如何判断 `constexpr`是否在编译时求值(无需人工检查)

c# - 基于比较 c# 将元素添加到列表时使用的最佳数据结构是什么

Python - 检查一个元素是否同时在两个列表中