QListIterator Class
template <typename T> class QListIteratorQListIterator 类为QList 和QQueue 提供了 Java 风格的 const 迭代器。更多内容...
| 标题: | #include <QListIterator> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
- 所有成员的列表,包括继承的成员
- QListIterator 是Qt 中 Java 风格迭代器的一部分。
公共函数
| QListIterator(const QList<T> &list) | |
| bool | findNext(const T &value) |
| bool | findPrevious(const T &value) |
| bool | hasNext() const |
| bool | hasPrevious() const |
| const T & | next() |
| const T & | peekNext() const |
| const T & | peekPrevious() const |
| const T & | previous() |
| void | toBack() |
| void | toFront() |
| QListIterator<T> & | operator=(const QList<T> &list) |
详细说明
QList 同时支持Java 风格迭代器和 STL 风格迭代器。STL 风格迭代器效率更高,应优先使用。模板参数T 指定列表中存储项的类型。
除了使用迭代器外,还可以使用索引位置。大多数QList 成员函数都将索引作为第一个参数,因此无需使用迭代器即可访问、修改和删除项目。
QListIterator<T> 允许您遍历QList<T>、QQueue<T> 或QStack<T>。如果您希望在遍历列表的同时对其进行修改,请改用QMutableListIterator<T>。
QListIterator 的构造函数接受一个QList 作为参数。构造完成后,迭代器位于列表的最前端(第一个元素之前)。以下是如何依次遍历所有元素的方法:
QList<float> list;
//...
QListIterator<float> i(list);
while (i.hasNext())
float f = i.next();next() 函数返回列表中的下一个元素,并使迭代器向前移动。与 STL 风格的迭代器不同,Java 风格的迭代器指向元素之间,而非直接指向元素本身。 第一次调用 `next()` 会将迭代器移动到第一个和第二个元素之间的位置,并返回第一个元素;第二次调用 `next()` 会将迭代器移动到第二个和第三个元素之间的位置,并返回第二个元素;以此类推。
以下是按反向顺序遍历元素的方法:
QListIterator<float> i(list);
i.toBack();
while (i.hasPrevious())
float f = i.previous();若要查找特定值的所有出现位置,请在循环中使用findNext() 或findPrevious()。
同一列表上可以使用多个迭代器。如果在 QListIterator 处于活动状态时对列表进行了修改,该 QListIterator 将继续遍历原始列表,忽略被修改的副本。
另请参阅 QMutableListIterator 和QList::const_iterator 。
成员函数文档
QListIterator::QListIterator(const QList<T> &list)
构建一个用于遍历list 的迭代器。该迭代器被设置为位于列表的开头(第一个元素之前)。
另请参阅 operator=()。
bool QListIterator::findNext(const T &value)
从当前迭代器位置开始向前搜索value 。如果找到了value ,则返回true ;否则返回false 。
调用完成后,如果找到了value ,迭代器将定位在匹配项的紧后方;否则,迭代器将定位在容器的末尾。
另请参阅 findPrevious()。
bool QListIterator::findPrevious(const T &value)
从当前迭代器位置开始向后搜索value 。如果找到了value ,则返回true ;否则返回false。
调用完成后,若找到了value ,迭代器将定位在匹配项的正前方;否则,迭代器将定位在容器的开头。
另请参阅 findNext()。
bool QListIterator::hasNext() const
如果迭代器前方至少还有一个元素(即迭代器不在容器的末尾),则返回true ;否则返回false 。
另请参阅 hasPrevious() 和next()。
bool QListIterator::hasPrevious() const
如果迭代器后方至少有一个元素(即迭代器未位于容器最前端),则返回true ;否则返回false 。
const T &QListIterator::next()
返回下一个元素,并将迭代器向前移动一个位置。
若在位于容器末尾的迭代器上调用此函数,将导致未定义的结果。
另请参阅 hasNext()、peekNext() 和previous()。
const T &QListIterator::peekNext() const
返回下一个元素,同时不移动迭代器。
若在位于容器末尾的迭代器上调用此函数,将导致未定义的结果。
另请参见 hasNext()、next(),以及peekPrevious()。
const T &QListIterator::peekPrevious() const
返回前一个元素,同时不移动迭代器。
若在位于容器前端的迭代器上调用此函数,将导致未定义的结果。
另请参阅 hasPrevious()、previous() 和peekNext()。
const T &QListIterator::previous()
返回前一个元素,并将迭代器向后移动一个位置。
若在位于容器前端的迭代器上调用此函数,将导致结果未定义。
另请参阅 hasPrevious()、peekPrevious() 和next()。
void QListIterator::toBack()
将迭代器移至容器末尾(最后一个元素之后)。
void QListIterator::toFront()
将迭代器移至容器开头(第一个元素之前)。
QListIterator<T> &QListIterator::operator=(const QList<T> &list)
使迭代器在list 上运行。迭代器被设置为位于列表的开头(第一个元素之前)。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.