QLinkedListIterator 类

template <typename T> class QLinkedListIterator

QLinkedListIterator 类提供对 QLinkedList 的 Java 样式 const 迭代器。更多信息...

头文件 #include <QLinkedListIterator>
CMakefind_package(Qt6 REQUIRED COMPONENTS Core5Compat)
target_link_libraries(mytarget PRIVATE Qt6::Core5Compat)
qmakeQT += core5compat

公共函数

QLinkedListIterator(const QLinkedList<T> &list)
boolfindNext(const T &value)
boolfindPrevious(const T &value)
boolhasNext() const
boolhasPrevious() const
const T &next()
const T &peekNext() const
const T &peekPrevious() const
const T &previous()
voidtoBack()
voidtoFront()
QLinkedListIterator<T> &operator=(const QLinkedList<T> &container)

详细描述

QLinkedList 既有 Java 样式迭代器,也有 STL 样式迭代器。Java 样式迭代器比 STL 样式迭代器更高级、更易用;然而,它们的效率略低。

QLinkedListIterator<T> 允许您迭代 QLinkedList<T>。如果您想在迭代过程中修改列表,请改用 QMutableLinkedListIterator<T>。

QLinkedListIterator 构造函数接受一个 QLinkedList 作为参数。构造完成后,迭代器位于列表的起始位置(在第一个项目之前)。以下是按顺序迭代所有元素的示例

QLinkedList<float> list;
...
QLinkedListIterator<float> i(list);
while (i.hasNext())
    qDebug() << i.next();

next() 函数返回列表中的下一个项目并移动迭代器。与 STL 样式迭代器不同,Java 样式迭代器指向元素之间的位置,而不是直接指向元素。对 next() 的第一次调用将迭代器移动到第一个和第二个项目之间的位置,并返回第一个项目;对 next() 的第二次调用将迭代器移动到第二个和第三个项目之间的位置,并返回第二个项目;依此类推。

以下是逆向迭代元素的示例

QLinkedListIterator<float> i(list);
i.toBack();
while (i.hasPrevious())
    qDebug() << i.previous();

如果您想查找特定值的所有出现,请在循环中使用 findNext() 或 findPrevious()。

可以在同一列表上使用多个迭代器。如果在一个QLinkedListIterator活动时修改列表,QLinkedListIterator将继续遍历原始列表,忽略修改后的副本。

另请参阅QMutableLinkedListIteratorQLinkedList::const_iterator

成员函数文档

QLinkedListIterator::QLinkedListIterator(const QLinkedList<T> &list)

构造一个用于遍历list的迭代器。迭代器被设置为列表的前端(在第一个项目之前)。

另请参阅operator=

QLinkedListIterator<T> &QLinkedListIterator::operator=(const QLinkedList<T> &container)

使得迭代器在list上操作。迭代器被设置为列表的前端(在第一个项目之前)。

另请参阅toFront() 和 toBack

void QLinkedListIterator::toFront()

将迭代器移至容器的前端(在第一个项目之前)。

另请参阅toBack() 和 next

void QLinkedListIterator::toBack()

将迭代器移至容器的末端(在最后一个项目之后)。

另请参阅toFront() 和 previous

bool QLinkedListIterator::hasNext() const

如果迭代器前面至少有一个项目,即迭代器不在容器的后面,则返回true;否则返回false

另请参阅hasPrevious() 和 next

bool QLinkedListIterator::hasPrevious() const

如果迭代器后面至少有一个项目,即迭代器不在容器的开头,则返回true;否则返回false

另请参阅hasNext() 和 previous

bool QLinkedListIterator::findNext(const T &value)

从一个迭代器当前位置开始的当前位置向前搜索value。如果找到value则返回true;否则返回false

在调用之后,如果找到value,则迭代器定位在匹配项目的后面;否则,迭代器定位在容器的后面。

另请参阅findPrevious

bool QLinkedListIterator::findPrevious(const T &value)

从一个迭代器当前位置开始的当前位置向后搜索value。如果找到value则返回true;否则返回false

在调用之后,如果找到value,则迭代器定位在匹配项目的前面;否则,迭代器定位在容器的开头。

另请参阅findNext()。

const T &QLinkedListIterator::next()

返回下一个项目并将迭代器向前移动一个位置。

在位于容器末尾的迭代器上调用此函数会导致未定义的结果。

另请参阅hasNext()、peekNextprevious()。

const T &QLinkedListIterator::peekNext() const

返回下一个项目而不移动迭代器。

在位于容器末尾的迭代器上调用此函数会导致未定义的结果。

另请参阅hasNext()、nextpeekPrevious()。

const T &QLinkedListIterator::peekPrevious() const

返回上一个项目而不移动迭代器。

在位于容器开头的迭代器上调用此函数会导致未定义的结果。

另请参阅hasPrevious()、previouspeekNext()。

const T &QLinkedListIterator::previous()

返回上一个项目并将迭代器向后会退一个位置。

在位于容器开头的迭代器上调用此函数会导致未定义的结果。

另请参阅hasPrevious()、peekPreviousnext()。

© 2024 The Qt Company Ltd. 本文档中的贡献均属于各自所有者的版权。提供的文档根据自由软件基金会的规定,受 GNU 自由文档许可证版本 1.3 的条款许可。Qt 及相关标志是 The Qt Company Ltd 在芬兰和其他国家/地区的商标。所有其他商标归各自所有者所有。