QTaggedIterator Class

template <typename Iterator, typename IteratorCategory> class QTaggedIterator

QTaggedIterator is a template class that wraps an iterator and exposes standard iterator traits. More...

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

Public Types

Public Functions

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)
QTaggedIterator<Iterator, IteratorCategory> operator-(qsizetype j) const
qsizetype operator-(const QTaggedIterator<Iterator, IteratorCategory> &j) const
QTaggedIterator<Iterator, IteratorCategory> &operator--()
QTaggedIterator<Iterator, IteratorCategory> operator--(int x)
QTaggedIterator<Iterator, IteratorCategory> &operator-=(qsizetype j)
bool operator<(const QTaggedIterator<Iterator, IteratorCategory> &j)
bool operator<=(const QTaggedIterator<Iterator, IteratorCategory> &j)
bool operator==(const QTaggedIterator<Iterator, IteratorCategory> &other) const
bool operator>(const QTaggedIterator<Iterator, IteratorCategory> &j)
bool operator>=(const QTaggedIterator<Iterator, IteratorCategory> &j)
QTaggedIterator<Iterator, IteratorCategory> operator+(qsizetype j, const QTaggedIterator<Iterator, IteratorCategory> &k)

Detailed Description

In order to use an iterator any of the standard algorithms, its iterator traits need to be known. As QSequentialIterable can work with many different kinds of containers, we cannot declare the traits in the iterator classes themselves. A QTaggedIterator gives you a way to explicitly declare a trait for a concrete instance of an iterator or QConstIterator.

Member Type Documentation

[alias] QTaggedIterator::iterator_category

Member Function Documentation

QTaggedIterator::QTaggedIterator(Iterator &&it)

Constructs a QTaggedIterator from an iterator or QConstIterator it. Checks whether the IteratorCategory passed as template argument matches the run time capabilities of it; if there's no match, it is refused.

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

Returns true if other points to a different item than this iterator; otherwise returns false.

See also operator==().

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

Returns an iterator to the item at j positions forward from this iterator.

See also operator-() and operator+=().

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

The prefix ++ operator (++it) advances the iterator to the next item in the container and returns an iterator to the new current item.

Calling this function on QSequentialIterable::end() leads to undefined results.

See also operator--().

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

This is an overloaded function.

The postfix ++ operator (it++) advances the iterator to the next item in the container and returns an iterator to the previously current item.

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

Advances the iterator by j items.

See also operator-=() and operator+().

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

Returns an iterator to the item at j positions backward from this iterator.

If the container in the QVariant does not support bi-directional iteration, calling this function leads to undefined results.

See also operator+(), operator-=(), and QIterable::canReverseIterate().

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

Returns the distance between this iterator and j.

See also operator+(), operator-=(), and QIterable::canReverseIterate().

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

The prefix -- operator (--it) makes the preceding item current and returns an iterator to the new current item.

Calling this function on QSequentialIterable::begin() leads to undefined results.

If the container in the QVariant does not support bi-directional iteration, calling this function leads to undefined results.

See also operator++() and QIterable::canReverseIterate().

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

This is an overloaded function.

The postfix -- operator (it--) makes the preceding item current and returns an iterator to the previously current item.

If the container in the QVariant does not support bi-directional iteration, calling this function leads to undefined results.

See also QIterable::canReverseIterate().

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

Makes the iterator go back by j items.

If the container in the QVariant does not support bi-directional iteration, calling this function leads to undefined results.

See also operator+=(), operator-(), and QIterable::canReverseIterate().

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

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

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

Returns true if other points to the same item as this iterator; otherwise returns false.

See also operator!=().

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

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

Related Non-Members

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

Returns an iterator to the item at j positions forward from iterator k.

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