QtBase  v6.3.1
Public Types | Public Member Functions | Friends | List of all members
QHash< Key, T >::const_iterator Class Reference

The QHash::const_iterator class provides an STL-style const iterator for QHash. More...

#include <qhash.h>

Public Types

typedef std::forward_iterator_tag iterator_category
 
typedef qptrdiff difference_type
 
typedef T value_type
 
typedef const Tpointer
 
typedef const Treference
 

Public Member Functions

constexpr const_iterator () noexcept=default
 
 const_iterator (const iterator &o) noexcept
 
const Key & key () const noexcept
 
const Tvalue () const noexcept
 
const Toperator* () const noexcept
 
const Toperator-> () const noexcept
 
bool operator== (const const_iterator &o) const noexcept
 
bool operator!= (const const_iterator &o) const noexcept
 
const_iteratoroperator++ () noexcept
 
const_iterator operator++ (int) noexcept
 

Friends

class iterator
 
class QHash< Key, T >
 
class QSet< Key >
 

Detailed Description

template<typename Key, typename T>
class QHash< Key, T >::const_iterator

The QHash::const_iterator class provides an STL-style const iterator for QHash.

\inmodule QtCore

QHash features both \l{STL-style iterators} and \l{Java-style iterators}. The STL-style iterators are more low-level and more cumbersome to use; on the other hand, they are slightly faster and, for developers who already know STL, have the advantage of familiarity.

QHash<Key, T>::const_iterator allows you to iterate over a QHash. If you want to modify the QHash as you iterate over it, you must use QHash::iterator instead. It is generally good practice to use QHash::const_iterator on a non-const QHash as well, unless you need to change the QHash through the iterator. Const iterators are slightly faster, and can improve code readability.

The default QHash::const_iterator constructor creates an uninitialized iterator. You must initialize it using a QHash function like QHash::constBegin(), QHash::constEnd(), or QHash::find() before you can start iterating. Here's a typical loop that prints all the (key, value) pairs stored in a hash:

Unlike QMap, which orders its items by key, QHash stores its items in an arbitrary order. The only guarantee is that items that share the same key (because they were inserted using a QMultiHash) will appear consecutively, from the most recently to the least recently inserted value.

Multiple iterators can be used on the same hash. However, be aware that any modification performed directly on the QHash (inserting and removing items) can cause the iterators to become invalid.

Inserting items into the hash or calling methods such as QHash::reserve() or QHash::squeeze() can invalidate all iterators pointing into the hash. Iterators are guaranteed to stay valid only as long as the QHash doesn't have to grow/shrink its internal hash table. Using any iterator after a rehashing operation has occurred will lead to undefined behavior.

Warning
Iterators on implicitly shared containers do not work exactly like STL-iterators. You should avoid copying a container while iterators are active on that container. For more information, read \l{Implicit sharing iterator problem}.
See also
QHash::iterator, QHashIterator

Definition at line 1087 of file qhash.h.

Member Typedef Documentation

◆ difference_type

template<typename Key , typename T >
QHash< Key, T >::const_iterator::difference_type

Definition at line 1098 of file qhash.h.

◆ iterator_category

template<typename Key , typename T >
QHash< Key, T >::const_iterator::iterator_category

Definition at line 1097 of file qhash.h.

◆ pointer

template<typename Key , typename T >
QHash< Key, T >::const_iterator::pointer

Definition at line 1100 of file qhash.h.

◆ reference

template<typename Key , typename T >
QHash< Key, T >::const_iterator::reference

Definition at line 1101 of file qhash.h.

◆ value_type

template<typename Key , typename T >
QHash< Key, T >::const_iterator::value_type

Definition at line 1099 of file qhash.h.

Constructor & Destructor Documentation

◆ const_iterator() [1/2]

template<typename Key , typename T >
template< class Key, class T > QHash< Key, T >::const_iterator::const_iterator ( )
constexprdefaultnoexcept

Constructs an uninitialized iterator.

Functions like key(), value(), and operator++() must not be called on an uninitialized iterator. Use operator=() to assign a value to it before using it.

See also
QHash::constBegin(), QHash::constEnd()

◆ const_iterator() [2/2]

template<typename Key , typename T >
template< class Key, class T > QHash< Key, T >::const_iterator::const_iterator ( const iterator other)
inlinenoexcept

Constructs a copy of other.

Definition at line 1104 of file qhash.h.

Member Function Documentation

◆ key()

template<typename Key , typename T >
template< class Key, class T > const Key & QHash< Key, T >::const_iterator::key ( ) const
inlinenoexcept

Returns the current item's key.

See also
value()

Definition at line 1106 of file qhash.h.

Here is the caller graph for this function:

◆ operator!=()

template<typename Key , typename T >
template< class Key, class T > bool QHash< Key, T >::const_iterator::operator!= ( const const_iterator other) const
inlinenoexcept

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

See also
operator==()

Definition at line 1111 of file qhash.h.

◆ operator*()

template<typename Key , typename T >
template< class Key, class T > const T & QHash< Key, T >::const_iterator::operator* ( ) const
inlinenoexcept

Returns the current item's value.

Same as value().

See also
key()

Definition at line 1108 of file qhash.h.

◆ operator++() [1/2]

template<typename Key , typename T >
template< class Key, class T > QHash< Key, T >::const_iterator & QHash< Key, T >::const_iterator::operator++ ( )
inlinenoexcept

The prefix ++ operator ({++i}) advances the iterator to the next item in the hash and returns an iterator to the new current item.

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

Definition at line 1113 of file qhash.h.

◆ operator++() [2/2]

template<typename Key , typename T >
template< class Key, class T > QHash< Key, T >::const_iterator QHash< Key, T >::const_iterator::operator++ ( int  )
inlinenoexcept

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

The postfix ++ operator ({i++}) advances the iterator to the next item in the hash and returns an iterator to the previously current item.

Definition at line 1118 of file qhash.h.

◆ operator->()

template<typename Key , typename T >
template< class Key, class T > const T * QHash< Key, T >::const_iterator::operator-> ( ) const
inlinenoexcept

Returns a pointer to the current item's value.

See also
value()

Definition at line 1109 of file qhash.h.

◆ operator==()

template<typename Key , typename T >
template< class Key, class T > bool QHash< Key, T >::const_iterator::operator== ( const const_iterator other) const
inlinenoexcept

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

See also
operator!=()

Definition at line 1110 of file qhash.h.

◆ value()

template<typename Key , typename T >
template< class Key, class T > const T & QHash< Key, T >::const_iterator::value ( ) const
inlinenoexcept

Returns the current item's value.

See also
key(), operator*()

Definition at line 1107 of file qhash.h.

Here is the caller graph for this function:

Friends And Related Function Documentation

◆ iterator

template<typename Key , typename T >
friend class iterator
friend

Definition at line 1090 of file qhash.h.

◆ QHash< Key, T >

template<typename Key , typename T >
friend class QHash< Key, T >
friend

Definition at line 1090 of file qhash.h.

◆ QSet< Key >

template<typename Key , typename T >
friend class QSet< Key >
friend

Definition at line 1090 of file qhash.h.


The documentation for this class was generated from the following files: