QLinkedListIterator 类
template <typename T> class QLinkedListIteratorQLinkedListIterator 类提供对 QLinkedList 的 Java 样式 const 迭代器。更多信息...
头文件 | #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> &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将继续遍历原始列表,忽略修改后的副本。
另请参阅QMutableLinkedListIterator 和 QLinkedList::const_iterator。
成员函数文档
QLinkedListIterator::QLinkedListIterator(const QLinkedList<T> &list)
构造一个用于遍历list的迭代器。迭代器被设置为列表的前端(在第一个项目之前)。
另请参阅operator=。
QLinkedListIterator<T> &QLinkedListIterator::operator=(const QLinkedList<T> &container)
使得迭代器在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()。
© 2024 The Qt Company Ltd. 本文档中的贡献均属于各自所有者的版权。提供的文档根据自由软件基金会的规定,受 GNU 自由文档许可证版本 1.3 的条款许可。Qt 及相关标志是 The Qt Company Ltd 在芬兰和其他国家/地区的商标。所有其他商标归各自所有者所有。