QLinkedListIterator Class
template <typename T> class QLinkedListIteratorQLinkedListIterator 类为QLinkedList 提供了 Java 风格的常量迭代器。更多
Header: | #include <QLinkedListIterator> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core5Compat) target_link_libraries(mytarget PRIVATE Qt6::Core5Compat) |
qmake: | QT += core5compat |
公共函数
QLinkedListIterator(const QLinkedList<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() |
QLinkedListIterator<T> & | operator=(const QLinkedList<T> &list) |
详细说明
QLinkedList 既有Java 风格的迭代器,也有STL 风格的迭代器。与 STL 风格的迭代器相比,Java 风格的迭代器更高级、更易用;但另一方面,它们的效率略低。
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 将继续迭代原始列表,而忽略修改后的副本。
另请参阅 QMutableLinkedListIterator 和QLinkedList::const_iterator 。
成员函数文档
QLinkedListIterator::QLinkedListIterator(const QLinkedList<T> &list)
构造一个遍历list 的迭代器。迭代器被设置为位于列表的前端(第一个项目之前)。
另请参阅 operator=() 。
QLinkedListIterator<T> &QLinkedListIterator::operator=(const QLinkedList<T> &list)
使迭代器在list 上运行。迭代器被设置在列表的前端(第一个项目之前)。
void QLinkedListIterator::toFront()
将迭代器移到容器的前面(第一个项目之前)。
void QLinkedListIterator::toBack()
将迭代器移到容器的后面(最后一个项目之后)。
bool QLinkedListIterator::hasNext() const
如果迭代器前面至少有一个项目,即迭代器不在容器的后面,则返回true
;否则返回false
。
另请参见 hasPrevious() 和next()。
bool QLinkedListIterator::hasPrevious() const
如果迭代器后面至少有一个项目,即迭代器不在容器的前面,则返回true
;否则返回false
。
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()、peekNext() 和previous()。
const T &QLinkedListIterator::peekNext() const
在不移动迭代器的情况下返回下一个项目。
对位于容器后部的迭代器调用此函数会导致未定义的结果。
另请参阅 hasNext()、next() 和peekPrevious()。
const T &QLinkedListIterator::peekPrevious() const
在不移动迭代器的情况下返回前一个项目。
对位于容器前部的迭代器调用此函数会导致未定义的结果。
另请参阅 hasPrevious()、previous() 和peekNext()。
const T &QLinkedListIterator::previous()
返回前一个项目,并将迭代器后移一个位置。
对位于容器前部的迭代器调用此函数会导致未定义的结果。
另请参阅 hasPrevious()、peekPrevious() 和next()。
© 2025 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.