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 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)
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)

Detailed Description

In order to use an iterator any of the standard algorithms, its iterator traits need to be known. As QMetaSequence::Iterable 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 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 QMetaSequence::Iterable::constEnd() leads to undefined results.

See also operator--().

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

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

This is an overloaded function.

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

Advances the iterator by j items.

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

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-(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().

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 QMetaSequence::Iterable::constBegin() 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)

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.

This is an overloaded function.

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> &other) const

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

See also operator!=().

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.