Sur cette page

QHash::const_iterator Class

class QHash::const_iterator

La classe QHash::const_iterator fournit un itérateur constant de style STL pour QHash. Plus d'informations...

Fonctions publiques

const_iterator()
const_iterator(const QHash<Key, T>::iterator &other)
const Key &key() const
const T &value() const
bool operator!=(const QHash<Key, T>::const_iterator &other) const
const T &operator*() const
QHash<Key, T>::const_iterator &operator++()
QHash<Key, T>::const_iterator operator++(int)
const T *operator->() const
bool operator==(const QHash<Key, T>::const_iterator &other) const

Description détaillée

QHash<Key, T>::const_iterator vous permet d'itérer sur un QHash. Si vous souhaitez modifier le QHash pendant que vous l'itérez, vous devez utiliser QHash::iterator à la place. Il est généralement conseillé d'utiliser QHash::const_iterator sur un QHash non-const également, à moins que vous n'ayez besoin de modifier le QHash par l'intermédiaire de l'itérateur. Les itérateurs const sont légèrement plus rapides et peuvent améliorer la lisibilité du code.

Le constructeur par défaut QHash::const_iterator crée un itérateur non initialisé. Vous devez l'initialiser à l'aide d'une fonction QHash comme QHash::cbegin(), QHash::cend() ou QHash::constFind() avant de pouvoir commencer l'itération. Voici une boucle typique qui imprime toutes les paires (clé, valeur) stockées dans un hachage :

    QHash<QString, int> 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;

Contrairement à QMap, qui classe ses éléments par clé, QHash stocke ses éléments dans un ordre arbitraire. La seule garantie est que les éléments qui partagent la même clé (parce qu'ils ont été insérés à l'aide d'un QMultiHash) apparaîtront consécutivement, de la valeur la plus récente à la valeur la moins récente.

Plusieurs itérateurs peuvent être utilisés sur le même hachage. Toutefois, il faut savoir que toute modification effectuée directement sur le site QHash (insertion et suppression d'éléments) peut rendre les itérateurs invalides.

L'insertion d'éléments dans le hachage ou l'appel à des méthodes telles que QHash::reserve() ou QHash::squeeze() peut invalider tous les itérateurs pointant vers le hachage. La validité des itérateurs n'est garantie que tant que le site QHash n'a pas à augmenter/réduire sa table de hachage interne. L'utilisation d'un itérateur après une opération de réorganisation de la table de hachage entraînera un comportement indéfini.

Vous pouvez cependant utiliser en toute sécurité des itérateurs pour supprimer des entrées de la table de hachage à l'aide de la méthode QHash::erase(). Cette fonction peut être appelée en toute sécurité pendant l'itération et n'affectera pas l'ordre des éléments dans la table de hachage.

Attention : Les itérateurs sur des conteneurs implicitement partagés ne fonctionnent pas exactement comme les itérateurs STL. Vous devez éviter de copier un conteneur lorsque des itérateurs sont actifs sur ce conteneur. Pour plus d'informations, lisez Problème des itérateurs à partage implicite.

Voir aussi QHash::iterator, QHash::key_iterator, et QHash::const_key_value_iterator.

Documentation sur les fonctions membres

[constexpr noexcept] const_iterator::const_iterator()

Construit un itérateur non initialisé.

Les fonctions telles que key(), value() et operator++() ne doivent pas être appelées sur un itérateur non initialisé. Utilisez operator=() pour lui attribuer une valeur avant de l'utiliser.

Voir également QHash::constBegin() et QHash::constEnd().

[noexcept] const_iterator::const_iterator(const QHash<Key, T>::iterator &other)

Construit une copie de other.

[noexcept] const Key &const_iterator::key() const

Renvoie la clé de l'élément en cours.

Voir aussi value().

[noexcept] const T &const_iterator::value() const

Renvoie la valeur de l'élément en cours.

Voir aussi key() et operator*().

[noexcept] bool const_iterator::operator!=(const QHash<Key, T>::const_iterator &other) const

Renvoie true si other pointe vers un élément différent de cet itérateur ; sinon, renvoie false.

Voir aussi operator==().

[noexcept] const T &const_iterator::operator*() const

Renvoie la valeur de l'élément courant.

Identique à value().

Voir aussi key().

[noexcept] QHash<Key, T>::const_iterator &const_iterator::operator++()

L'opérateur préfixe ++ (++i) fait passer l'itérateur à l'élément suivant du hachage et renvoie un itérateur vers le nouvel élément courant.

L'appel de cette fonction sur QHash::end() conduit à des résultats indéfinis.

[noexcept] QHash<Key, T>::const_iterator const_iterator::operator++(int)

L'opérateur postfixe ++ (i++) fait passer l'itérateur à l'élément suivant du hachage et renvoie un itérateur à l'élément courant précédent.

Il s'agit d'une fonction surchargée.

[noexcept] const T *const_iterator::operator->() const

Renvoie un pointeur sur la valeur de l'élément en cours.

Voir aussi value().

[noexcept] bool const_iterator::operator==(const QHash<Key, T>::const_iterator &other) const

Renvoie true si other pointe sur le même élément que cet itérateur ; sinon, renvoie false.

Voir aussi operator!=().

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