Sur cette page

QMutableHashIterator Class

template <typename Key, typename T> class QMutableHashIterator

La classe `QMutableHashIterator` fournit un itérateur non constant de type Java pour ` QHash ` et ` QMultiHash`. En savoir plus...

En-tête : #include <QMutableHashIterator>
CMake : find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake : QT += core

Fonctions publiques

QMutableHashIterator(QHash<Key, T> &hash)
bool findNext(const T &value)
bool hasNext() const
const Key &key() const
QMutableHashIterator<Key, T>::Item next()
QMutableHashIterator<Key, T>::Item peekNext() const
void remove()
void setValue(const T &value)
void toBack()
void toFront()
const T &value() const
T &value()
QMutableHashIterator<Key, T> &operator=(QHash<Key, T> &hash)

Description détaillée

QHash dispose à la fois d'itérateurs de type Java et d'itérateurs de type STL. Les itérateurs de type STL sont plus efficaces et sont à privilégier. Le paramètre de modèle Key spécifie le type de clé du hachage, et T spécifie le type de valeur.

QMutableHashIterator<Key, T> vous permet de parcourir un QHash et de modifier le hachage. Si vous ne souhaitez pas modifier le hachage (ou si votre QHash est de type const), utilisez plutôt QHashIterator, qui est légèrement plus rapide.

Le constructeur de QMutableHashIterator prend un ` QHash ` comme argument. Une fois construit, l’itérateur se trouve tout au début du hachage (avant le premier élément). Voici comment parcourir tous les éléments de manière séquentielle :

QHash<int, QWidget*> hash;
//...
QMutableHashIterator<int, QWidget*> i(hash);
while (i.hasNext()) {
    i.next();
    qDebug() << i.key() << ": " << i.value();
}

La fonction next() renvoie l'élément suivant du hachage et fait avancer l'itérateur. Les fonctions key() et value() renvoient respectivement la clé et la valeur du dernier élément qui a été sauté.

Contrairement aux itérateurs de type STL, les itérateurs de type Java pointent vers l’espace entre les éléments plutôt que directement vers les éléments eux-mêmes. Le premier appel à next() fait avancer l’itérateur vers la position située entre le premier et le deuxième élément, et renvoie le premier élément ; le deuxième appel à next() fait avancer l’itérateur vers la position située entre le deuxième et le troisième élément ; et ainsi de suite.

Positions de l'itérateur entre les éléments A, B, C et D

Si vous souhaitez trouver toutes les occurrences d’une valeur particulière, utilisez la méthode ` findNext()` dans une boucle. Par exemple :

QMutableHashIterator<int, QWidget*> i(hash);
while (i.findNext(widget)) {
    qDebug() << "Found widget " << widget << " under key "
           << i.key();
}

Si vous souhaitez supprimer des éléments au fur et à mesure que vous parcourez le hachage, utilisez ` remove()`. Si vous souhaitez modifier la valeur d'un élément, utilisez ` setValue()`.

Exemple :

QMutableHashIterator<QString, QString> i(hash);
while (i.hasNext()) {
    i.next();
    if (i.key() == i.value())
        i.remove();
}

Cet exemple supprime toutes les paires (clé, valeur) dont la clé et la valeur sont identiques.

Un seul itérateur modifiable peut être actif sur un hachage donné à un moment donné. De plus, aucune modification ne doit être effectuée directement sur le hachage tant que l'itérateur est actif (par opposition à une modification effectuée via l'itérateur), car cela pourrait invalider l'itérateur et entraîner un comportement indéfini.

Voir également QHashIterator et QHash::iterator.

Documentation sur les fonctions membres

QMutableHashIterator::QMutableHashIterator(QHash<Key, T> &hash)

Crée un itérateur permettant de parcourir hash. L'itérateur est positionné en tête du hachage (avant le premier élément).

Voir également operator=().

bool QMutableHashIterator::findNext(const T &value)

Recherche « value » à partir de la position actuelle de l’itérateur et vers l’avant. Renvoie « true » si une paire (clé, valeur) dont la valeur est « value » est trouvée ; sinon, renvoie « false ».

Après l'appel, si value a été trouvé, l'itérateur est positionné juste après l'élément correspondant ; sinon, l'itérateur est positionné à la fin du conteneur.

bool QMutableHashIterator::hasNext() const

Renvoie « true » s'il reste au moins un élément avant l'itérateur, c'est-à-dire si l'itérateur ne se trouve pas à la fin du conteneur ; sinon, renvoie « false ».

Voir également next().

const Key &QMutableHashIterator::key() const

Renvoie la clé du dernier élément qui a été ignoré à l'aide de l'une des fonctions de parcours (next(), findNext()).

Voir également value().

QMutableHashIterator<Key, T>::Item QMutableHashIterator::next()

Renvoie l'élément suivant et fait avancer l'itérateur d'une position.

Appelez la fonction ` key()` sur la valeur renvoyée pour obtenir la clé de l'élément, et la fonction ` value()` pour obtenir sa valeur.

L'appel de cette fonction sur un itérateur situé à la fin du conteneur donne lieu à des résultats indéfinis.

Voir également hasNext() et peekNext().

QMutableHashIterator<Key, T>::Item QMutableHashIterator::peekNext() const

Renvoie une référence à l'élément suivant sans déplacer l'itérateur.

Appelez la fonction key() sur la valeur renvoyée pour obtenir la clé de l'élément, et la fonction value() pour obtenir sa valeur.

L'appel de cette fonction sur un itérateur situé à la fin du conteneur donne lieu à des résultats indéfinis.

Voir également ` hasNext()` et ` next()`.

void QMutableHashIterator::remove()

Supprime le dernier élément qui a été ignoré à l'aide de l'une des fonctions de parcours (next(), findNext()).

Voir également setValue().

void QMutableHashIterator::setValue(const T &value)

Remplace la valeur du dernier élément qui a été sauté à l'aide de l'une des fonctions de parcours par value.

Les fonctions de parcours sont ` next()` et ` findNext()`.

Voir également key(), value() et remove().

void QMutableHashIterator::toBack()

Déplace l'itérateur à la fin du conteneur (après le dernier élément).

Voir aussi toFront().

void QMutableHashIterator::toFront()

Déplace l'itérateur au début du conteneur (avant le premier élément).

Voir également toBack() et next().

const T &QMutableHashIterator::value() const

Renvoie la valeur du dernier élément qui a été sauté à l'aide de l'une des fonctions de parcours (next(), findNext()).

Voir également key() et setValue().

T &QMutableHashIterator::value()

Renvoie une référence non constante à la valeur du dernier élément qui a été sauté à l'aide de l'une des fonctions de parcours.

QMutableHashIterator<Key, T> &QMutableHashIterator::operator=(QHash<Key, T> &hash)

Fait en sorte que l'itérateur opère sur hash. L'itérateur est placé en tête du hachage (avant le premier élément).

Voir également ` toFront()` et ` toBack()`.

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