Qt 6.x
The Qt SDK
Loading...
Searching...
No Matches
QMultiHash< Key, T >::const_iterator Class Reference

\inmodule QtCore More...

#include <qhash.h>

+ Collaboration diagram for QMultiHash< Key, T >::const_iterator:

Public Types

typedef std::forward_iterator_tag iterator_category
 
typedef qptrdiff difference_type
 
typedef T value_type
 
typedef const T * pointer
 
typedef const T & reference
 

Public Member Functions

constexpr const_iterator () noexcept=default
 Constructs an uninitialized iterator.
 
 const_iterator (const iterator &o) noexcept
 Constructs a copy of other.
 
const Keykey () const noexcept
 Returns the current item's key.
 
T & value () const noexcept
 Returns the current item's value.
 
T & operator* () const noexcept
 Returns the current item's value.
 
T * operator-> () const noexcept
 Returns a pointer to the current item's value.
 
bool operator== (const const_iterator &o) const noexcept
 Returns true if other points to the same item as this iterator; otherwise returns false.
 
bool operator!= (const const_iterator &o) const noexcept
 Returns true if other points to a different item than this iterator; otherwise returns false.
 
const_iteratoroperator++ () noexcept
 The prefix ++ operator ({++i}) advances the iterator to the next item in the hash and returns an iterator to the new current item.
 
const_iterator operator++ (int) noexcept
 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.
 

Friends

class iterator
 
class QMultiHash< Key, T >
 

Detailed Description

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

\inmodule QtCore

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

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

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

hash.insert("January", 1);
hash.insert("February", 2);
...
hash.insert("December", 12);
for (auto i = hash.cbegin(), end = hash.cend(); i != end; ++i)
cout << qPrintable(i.key()) << ": " << i.value() << endl;
\inmodule QtCore
Definition qhash.h:818
iterator end() noexcept
Returns an \l{STL-style iterators}{STL-style iterator} pointing to the imaginary item after the last ...
Definition qhash.h:1830
QHash< int, QWidget * > hash
[35multi]
GLuint GLuint end
#define qPrintable(string)
Definition qstring.h:1391

Unlike QMap, which orders its items by key, QMultiHash 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 QMultiHash (inserting and removing items) can cause the iterators to become invalid.

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

If you need to keep iterators over a long period of time, we recommend that you use QMultiMap rather than QMultiHash.

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
QMultiHash::iterator, QMultiHash::key_iterator, QMultiHash::const_key_value_iterator

Definition at line 1747 of file qhash.h.

Member Typedef Documentation

◆ difference_type

template<typename Key , typename T >
typedef qptrdiff QMultiHash< Key, T >::const_iterator::difference_type

Definition at line 1764 of file qhash.h.

◆ iterator_category

template<typename Key , typename T >
typedef std::forward_iterator_tag QMultiHash< Key, T >::const_iterator::iterator_category

Definition at line 1763 of file qhash.h.

◆ pointer

template<typename Key , typename T >
typedef const T* QMultiHash< Key, T >::const_iterator::pointer

Definition at line 1766 of file qhash.h.

◆ reference

template<typename Key , typename T >
typedef const T& QMultiHash< Key, T >::const_iterator::reference

Definition at line 1767 of file qhash.h.

◆ value_type

template<typename Key , typename T >
typedef T QMultiHash< Key, T >::const_iterator::value_type

Definition at line 1765 of file qhash.h.

Constructor & Destructor Documentation

◆ const_iterator() [1/2]

template<typename Key , typename T >
template< class Key, class T > QMultiHash< 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
QMultiHash::constBegin(), QMultiHash::constEnd()

◆ const_iterator() [2/2]

template<typename Key , typename T >
template< class Key, class T > QMultiHash< Key, T >::const_iterator::const_iterator ( const iterator o)
inlinenoexcept

Constructs a copy of other.

Definition at line 1770 of file qhash.h.

Member Function Documentation

◆ key()

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

Returns the current item's key.

See also
value()

Definition at line 1772 of file qhash.h.

References i.

◆ operator!=()

template<typename Key , typename T >
template< class Key, class T > bool QMultiHash< 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 1777 of file qhash.h.

References e, and o.

◆ operator*()

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

Returns the current item's value.

Same as value().

See also
key()

Definition at line 1774 of file qhash.h.

◆ operator++() [1/2]

template<typename Key , typename T >
template< class Key, class T > QMultiHash< Key, T >::const_iterator & QMultiHash< 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 QMultiHash::end() leads to undefined results.

Definition at line 1779 of file qhash.h.

References e, i, nullptr, and Q_ASSERT.

◆ operator++() [2/2]

template<typename Key , typename T >
template< class Key, class T > QMultiHash< Key, T >::const_iterator QMultiHash< 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 1789 of file qhash.h.

◆ operator->()

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

Returns a pointer to the current item's value.

See also
value()

Definition at line 1775 of file qhash.h.

◆ operator==()

template<typename Key , typename T >
template< class Key, class T > bool QMultiHash< 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 1776 of file qhash.h.

References e, and o.

◆ value()

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

Returns the current item's value.

See also
key(), operator*()

Definition at line 1773 of file qhash.h.

Friends And Related Symbol Documentation

◆ iterator

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

Definition at line 1750 of file qhash.h.

◆ QMultiHash< Key, T >

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

Definition at line 1750 of file qhash.h.


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