Sur cette page

QHash::iterator Class

class QHash::iterator

La classe « QHash::iterator » fournit un itérateur non-const de type STL pour QHash. En savoir plus…

Fonctions publiques

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

Description détaillée

QHash<Key, T>::iterator vous permet de parcourir une QHash et de modifier la valeur (mais pas la clé) associée à une clé particulière. Si vous souhaitez parcourir une ` QHash` constante, vous devez utiliser ` QHash::const_iterator`. Il est généralement recommandé d’utiliser ` QHash::const_iterator ` sur une ` QHash ` non constante également, sauf si vous devez modifier la ` QHash ` via l’itérateur. Les itérateurs constants sont légèrement plus rapides et peuvent améliorer la lisibilité du code.

Le constructeur par défaut de ` QHash::iterator ` crée un itérateur non initialisé. Vous devez l’initialiser à l’aide d’une fonction ` QHash ` telle que ` QHash::begin()`, ` QHash::end()` ou ` QHash::find()` avant de pouvoir commencer l’itération. Voici une boucle typique qui affiche 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 trie ses éléments par clé, ` QHash ` stocke ses éléments dans un ordre arbitraire.

Voici un exemple qui incrémente de 2 chaque valeur stockée dans l’ QHash:

for (auto i = hash.begin(), end = hash.end(); i != end; ++i)
    i.value() += 2;

Pour supprimer des éléments d’un QHash, vous pouvez utiliser erase_if(QHash<Key, T> &map, Predicate pred) :

erase_if(hash, [](const QHash<QString, int>::iterator it) { return it.value() > 10; });

Il est possible d'utiliser plusieurs itérateurs sur le même hachage. Cependant, sachez que toute modification effectuée directement sur l'QHash (insertion ou suppression d'éléments) peut rendre les itérateurs invalides.

L’insertion d’éléments dans le hachage ou l’appel de 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 l’ QHash n’a pas besoin d’agrandir ou de 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.

Si vous devez conserver des itérateurs pendant une longue période, nous vous recommandons d’utiliser ` QMap ` plutôt que ` QHash`.

Avertissement : les itérateurs sur des conteneurs partagés implicitement ne fonctionnent pas exactement comme les itérateurs STL. Vous devez éviter de copier un conteneur tant que des itérateurs sont actifs sur ce conteneur. Pour plus d’informations, consultez la section « Problème d’itérateur avec partage implicite ».

Voir également « QHash::const_iterator », « QHash::key_iterator » et « QHash::key_value_iterator ».

Documentation sur les fonctions membres

[constexpr noexcept default] iterator::iterator()

Crée un itérateur non initialisé.

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

Voir également QHash::begin() et QHash::end().

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

Renvoie la clé de l'élément courant sous forme de référence constante.

Il n'existe pas de moyen direct de modifier la clé d'un élément via un itérateur, bien que cela soit possible en appelant d'abord ` QHash::erase()` puis ` QHash::insert()`.

Voir également value().

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

Renvoie une référence modifiable à la valeur de l'élément courant.

Vous pouvez modifier la valeur d'un élément en utilisant la fonction `value()` à gauche d'une affectation, par exemple :

if (i.key() == "Hello")
    i.value() = "Bonjour";

Voir également key() et operator*().

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

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

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

Voir également operator==().

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

Renvoie une référence modifiable à la valeur de l'élément courant.

Identique à ` value()`.

Voir aussi ` key()`.

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

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

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

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

L'opérateur postfixe ++ (i++) fait avancer l'itérateur vers l'élément suivant du hachage et renvoie un itérateur vers l'élément sur lequel il se trouvait précédemment.

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

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

Renvoie un pointeur vers la valeur de l'élément actuel.

Voir aussi value().

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

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

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

Voir également 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.