QList/QLinkedList 的迭代器是永久的吗? [复制]

Posted

技术标签:

【中文标题】QList/QLinkedList 的迭代器是永久的吗? [复制]【英文标题】:Is QList/QLinkedList 's iterator permanent? [duplicate] 【发布时间】:2016-09-01 13:29:35 【问题描述】:

在QLinkedList的插入函数中,它返回一个迭代器

iterator QLinkedList::insert(iterator before, const T &value)

返回的迭代器是永久的吗?我可以找到使用返回的迭代器插入的原始value 吗?即使在我向列表中/从列表中插入/删除许多其他项目之后?

【问题讨论】:

***.com/questions/8657244/… QList's not a linked-list. 【参考方案1】:

从文档中我认为QList::iterator 不是“永久的”,而QLinkedList::iterator 在某些情况下是。

对于QList

可以在同一个列表上使用多个迭代器。但是,请注意 在 QList 上执行的任何非常量函数调用都将呈现 所有现有的迭代器未定义。如果您需要将迭代器保留在 很长一段时间,我们建议您使用 QLinkedList 而不是 QList。

对于QLinkedList

可以在同一个列表上使用多个迭代器。如果您将项目添加到 列表中,现有的迭代器将保持有效。如果您删除项目 从列表中,指向已删除项目的迭代器将变为 悬空迭代器。

见QList::iterator和QLinkedList::iterator

【讨论】:

以上是关于QList/QLinkedList 的迭代器是永久的吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

用Qt Label 生成矩阵阵列

Python迭代器是啥?

python-19-迭代器是个什么东西?

什么是迭代器?

python迭代器是啥意思

C++ 迭代器是指针吗