QMutableLinkedListIterator 类
template <typename T> class QMutableLinkedListIteratorQMutableLinkedListIterator 类提供了一个 Java 样式的非常量迭代器,用于 QLinkedList。有关更多信息,请参阅详情。
头文件 | #include <QMutableLinkedListIterator> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Core5Compat) target_link_libraries(mytarget PRIVATE Qt6::Core5Compat) |
qmake | QT += core5compat |
公共函数
QMutableLinkedListIterator(QLinkedList<T> &list) | |
bool | findNext(const T &value) |
bool | findPrevious(const T &value) |
bool | hasNext() const |
bool | hasPrevious() const |
void | insert(const T &value) |
T & | next() |
T & | peekNext() const |
T & | peekPrevious() const |
T & | previous() |
void | remove() |
void | setValue(const T &value) const |
void | toBack() |
void | toFront() |
const T & | value() const |
T & | value() |
QMutableLinkedListIterator<T> & | operator=(QLinkedList<T> &container) |
详细描述
QLinkedList 具有类似Java 风格迭代器和类似STL 风格迭代器的迭代器。Java 风格迭代器更高级,也更容易使用,但效率略低。
QMutableLinkedListIterator<T> 允许您迭代QLinkedList<T>,并修改该列表。如果您不想修改列表(或有一个 const QLinkedList),则可以使用稍微快一点的 QLinkedListIterator<T>。
QMutableLinkedListIterator 构造函数接受一个 QLinkedList 作为参数。构造完成后,迭代器位于列表的开始位置(在第一个项之前)。以下是如何依次迭代所有元素的方法
QLinkedList<float> list; ... QMutableLinkedListIterator<float> i(list); while (i.hasNext()) qDebug() << i.next();
函数 next() 返回列表中的下一个项并移动迭代器。与STL风格的迭代器不同,Java风格的迭代器指向的是项目之间的 中间,而不是直接指向项目本身。第一次调用 next() 将迭代器移动到第一和第二项之间的位置,并返回第一项;第二次调用 next() 将迭代器移动到第二和第三项之间的位置,返回第二项;依此类推。
以下是如何以倒序遍历元素的方法
QMutableLinkedListIterator<float> i(list); i.toBack(); while (i.hasPrevious()) qDebug() << i.previous();
如果您想要找到特定值的所有出现,请在循环中使用 findNext() 或 findPrevious()。
如果您在遍历列表时想要移除项目,请使用 remove()。如果您想要修改项的值,请使用 setValue()。如果您想要在列表中插入一个新项,请使用 insert()。
示例
QMutableLinkedListIterator<int> i(list); while (i.hasNext()) { int val = i.next(); if (val < 0) { i.setValue(-val); } else if (val == 0) { i.remove(); } }
示例遍历列表,将负数替换为其绝对值,并消除零。
在任何给定时间,一个可变迭代器只能对一个列表进行操作。此外,在迭代器活动时(与通过迭代器相反),不应直接对列表进行更改,因为这可能会导致迭代器无效并导致未定义行为。
另请参阅QLinkedListIterator 和 QLinkedList::iterator。
成员函数文档
QMutableLinkedListIterator::QMutableLinkedListIterator(QLinkedList<T> &list)
构造一个遍历
另请参阅operator=()。
QMutableLinkedListIterator<T> &QMutableLinkedListIterator::operator=(QLinkedList<T> &container)
使迭代器操作 list。迭代器会被设置为在列表的前面(在第一项之前)。
void QMutableLinkedListIterator::toFront()
将迭代器移动到容器的前面(在第一项之前)。
void QMutableLinkedListIterator::toBack()
将迭代器移动到容器的后面(在最后一项之后)。
bool QMutableLinkedListIterator::hasNext() const
如果迭代器前面至少有一个项,即迭代器不在容器的后面,返回 true
;否则返回 false
。
另请参阅hasPrevious() 和 next()。
bool QMutableLinkedListIterator::hasPrevious() const
如果迭代器后面至少有一个项目,则返回 true
,即迭代器不在容器的开头;否则返回 false
。
bool QMutableLinkedListIterator::findNext(const T &value)
从当前迭代器位置向前搜索 value。如果找到了 value,返回 true
;否则返回 false
。
调用后,如果找到了 value,迭代器将位于匹配项目之后;否则,迭代器将位于容器末尾。
另请参阅findPrevious()。
bool QMutableLinkedListIterator::findPrevious(const T &value)
从当前迭代器位置向后搜索 value。如果找到 value,则返回 true
;否则返回 false
。
调用后,如果找到 value,迭代器将位于匹配项目之前;否则,迭代器将位于容器开头。
另请参阅findNext()。
void QMutableLinkedListIterator::insert(const T &value)
在当前迭代器位置插入 value。调用后,迭代器位于插入项之后。
T &QMutableLinkedListIterator::next()
返回下一个项目的引用,并将迭代器前进一个位置。
在容器的末尾位置调用此函数会导致未定义的结果。
另请参阅hasNext()、peekNext() 和 previous()。
T &QMutableLinkedListIterator::peekNext() const
返回下一个项目的引用,但不移动迭代器。
在容器的末尾位置调用此函数会导致未定义的结果。
另请参阅hasNext()、next() 和 peekPrevious()。
T &QMutableLinkedListIterator::peekPrevious() const
返回上一个项目的引用,但不移动迭代器。
在容器的开头位置调用此函数会导致未定义的结果。
另请参阅hasPrevious()、peekPrevious() 和 peekNext()。
T &QMutableLinkedListIterator::previous()
返回上一个项目的引用,并将迭代器后退一个位置。
在容器的开头位置调用此函数会导致未定义的结果。
另请参阅hasPrevious()、peekPrevious() 和 next()。
void QMutableLinkedListIterator::remove()
使用遍历函数(next()、previous()、findNext()、findPrevious())跳过的最后一个条目被移除。
示例
QMutableLinkedListIterator<int> i(list); while (i.hasNext()) { int val = i.next(); if (val < -32768 || val > 32767) i.remove(); }
void QMutableLinkedListIterator::setValue(const T &值) const
使用遍历函数(next()、previous()、findNext()、findPrevious())跳过的最后一个条目的值被替换为值。
遍历函数包括:next()、previous()、findNext() 和 findPrevious。
示例
QMutableLinkedListIterator<double> i(list); while (i.hasNext()) { double val = i.next(); i.setValue(std::sqrt(val)); }
另请参阅 value()、remove() 和 insert()。
const T &QMutableLinkedListIterator::value() const
返回使用遍历函数(next()、previous()、findNext()、findPrevious())跳过的最后一个条目的值。
在调用 next() 或 findNext() 之后,value() 等同于 peekPrevious()。在调用 previous() 或 findPrevious() 之后,value() 等同于 peekNext。
另请参阅 setValue()。
T &QMutableLinkedListIterator::value()
这是一个重载函数。
返回使用遍历函数跳过的最后一个条目的非const引用的值。
© 2024 Qt公司版权所有。此处包含的文档贡献是各自所有者的版权。提供的文档是根据自由软件基金会的发布,许可在GNU自由文档许可版本1.3下使用的。Qt及其相应标志是芬兰及其它国家/地区的Qt公司的商标。所有其他商标属于其各自所有者。