本页内容

QTaggedIterator Class

template <typename Iterator, typename IteratorCategory> class QTaggedIterator

QTaggedIterator 是一个模板类,它封装了一个迭代器,并暴露了标准的迭代器特性。更多内容...

头文件: #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)

详细说明

QTaggedIterator<Iterator, IteratorCategory> 封装了一个迭代器,其中Iterator 是底层迭代器类型(例如QIterator 或QConstIterator ),而IteratorCategory 是标准迭代器类别标签(例如 std::forward_iterator_tag 或 std::random_access_iterator_tag)。

要在任何标准算法中使用迭代器,必须知道其迭代器特质。由于QMetaSequence::Iterable 可以处理许多不同类型的容器,因此我们无法在迭代器类本身中声明这些特质。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 )将迭代器向前移动到容器中的下一个元素,并返回指向新当前元素的迭代器。

在 QMetaSequence::Iterable::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 )将前一个元素设为当前元素,并返回指向新当前元素的迭代器。

在 QMetaSequence::Iterable::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 个位置处的项。

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