QTaggedIterator Class

template <typename Iterator, typename IteratorCategory> class QTaggedIterator

QTaggedIterator 是一个封装迭代器并公开标准迭代器特征的模板类。更多

Header: #include <QTaggedIterator>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Qt 6.0

公共函数

QTaggedIterator(Iterator &&it)
bool operator!=(const QTaggedIterator<Iterator, IteratorCategory> &other) const
QTaggedIterator<Iterator, IteratorCategory> operator+(qsizetype j) const
QTaggedIterator<Iterator, IteratorCategory> &operator++()
QTaggedIterator<Iterator, IteratorCategory> operator++(int x)
QTaggedIterator<Iterator, IteratorCategory> &operator+=(qsizetype j)
qsizetype operator-(const QTaggedIterator<Iterator, IteratorCategory> &j) const
QTaggedIterator<Iterator, IteratorCategory> operator-(qsizetype j) const
QTaggedIterator<Iterator, IteratorCategory> &operator--()
QTaggedIterator<Iterator, IteratorCategory> operator--(int x)
QTaggedIterator<Iterator, IteratorCategory> &operator-=(qsizetype j)
bool operator==(const QTaggedIterator<Iterator, IteratorCategory> &other) const
QTaggedIterator<Iterator, IteratorCategory> operator+(qsizetype j, const QTaggedIterator<Iterator, IteratorCategory> &k)

详细描述

要使用迭代器的任何标准算法,都需要知道它的迭代器特质。由于QSequentialIterable 可以与许多不同类型的容器协同工作,我们无法在迭代器类中声明迭代器特征。QTaggedIterator 为您提供了明确声明迭代器或QConstIterator 的具体实例特征的方法。

成员函数文档

QTaggedIterator::QTaggedIterator(Iterator &&it)

从迭代器或QConstIterator it 构造一个 QTaggedIterator。检查作为模板参数传递的 IteratorCategory 是否与it 的运行时功能相匹配;如果不匹配,则拒绝it

bool QTaggedIterator::operator!=(const QTaggedIterator<Iterator, IteratorCategory> &other) const

如果other 指向与此迭代器不同的项目,则返回true ;否则返回false

另请参阅 operator==() 。

QTaggedIterator<Iterator, IteratorCategory> QTaggedIterator::operator+(qsizetype j) const

返回从该迭代器向前j 位置的项目的迭代器。

另请参阅 operator-() 和operator+=()。

QTaggedIterator<Iterator, IteratorCategory> &QTaggedIterator::operator++()

前缀++ 操作符 (++it) 将迭代器前进到容器中的下一个项目,并返回一个指向新的当前项目的迭代器。

QSequentialIterable::constEnd() 上调用此函数会导致未定义的结果。

另请参阅 operator--()。

QTaggedIterator<Iterator, IteratorCategory> QTaggedIterator::operator++(int x)

这是一个重载函数。

后缀++ 运算符 (it++) 将迭代器前进到容器中的下一个项目,并返回一个指向先前当前项目的迭代器。

QTaggedIterator<Iterator, IteratorCategory> &QTaggedIterator::operator+=(qsizetype j)

通过j 项推进迭代器。

另请参阅 operator-=() 和operator+()。

qsizetype QTaggedIterator::operator-(const QTaggedIterator<Iterator, IteratorCategory> &j) const

返回此迭代器与j 之间的距离。

另请参见 operator+()、operator-=() 和QIterable::canReverseIterate()。

QTaggedIterator<Iterator, IteratorCategory> QTaggedIterator::operator-(qsizetype j) const

返回从该迭代器向后位于j 位置的项目的迭代器。

如果QVariant 中的容器不支持双向迭代,调用此函数将导致未定义的结果。

另请参阅 operator+()、operator-=() 和QIterable::canReverseIterate()。

QTaggedIterator<Iterator, IteratorCategory> &QTaggedIterator::operator--()

前缀-- 操作符 (--it) 使前一个项目成为当前项目,并返回一个指向新的当前项目的迭代器。

QSequentialIterable::constBegin() 上调用此函数会导致未定义的结果。

如果QVariant 中的容器不支持双向迭代,调用该函数将导致未定义的结果。

另请参阅 operator++() 和QIterable::canReverseIterate()。

QTaggedIterator<Iterator, IteratorCategory> QTaggedIterator::operator--(int x)

这是一个重载函数。

后缀-- 运算符 (it--) 使前一个项目成为当前项目,并返回一个指向前一个当前项目的迭代器。

如果QVariant 中的容器不支持双向迭代,调用此函数将导致未定义的结果。

另请参阅 QIterable::canReverseIterate() 。

QTaggedIterator<Iterator, IteratorCategory> &QTaggedIterator::operator-=(qsizetype j)

使迭代器返回j 项。

如果QVariant 中的容器不支持双向迭代,调用此函数将导致未定义的结果。

另请参阅 operator+=()、operator-() 和QIterable::canReverseIterate()。

bool QTaggedIterator::operator==(const QTaggedIterator<Iterator, IteratorCategory> &other) const

如果other 指向与此迭代器相同的项目,则返回true ;否则返回false

另请参阅 operator!=() 。

相关非成员

QTaggedIterator<Iterator, IteratorCategory> operator+(qsizetype j, const QTaggedIterator<Iterator, IteratorCategory> &k)

从迭代器k 开始,返回位于j 位置的项目的迭代器。

© 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.