Sur cette page

QMutableMapIterator Class

template <typename Key, typename T> class QMutableMapIterator

La classe `QMutableMapIterator` fournit un itérateur non constant de type Java pour ` QMap`. En savoir plus...

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

Fonctions publiques

QMutableMapIterator(QMap<Key, T> &map)
bool findNext(const T &value)
bool findPrevious(const T &value)
bool hasNext() const
bool hasPrevious() const
const Key &key() const
QMutableMapIterator<Key, T>::Item next()
QMutableMapIterator<Key, T>::Item peekNext() const
QMutableMapIterator<Key, T>::Item peekPrevious() const
QMutableMapIterator<Key, T>::Item previous()
void remove()
void setValue(const T &value)
void toBack()
void toFront()
const T &value() const
T &value()
QMutableMapIterator<Key, T> &operator=(QMap<Key, T> &map)

Description détaillée

QMap 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é de la carte, et T spécifie le type de valeur.

QMutableMapIterator<Key, T> vous permet de parcourir une QMap et de modifier la carte. Si vous ne souhaitez pas modifier la carte (ou si vous disposez d’un QMap de type const), utilisez plutôt l’ QMapIterator, légèrement plus rapide.

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

QMap<int, QWidget*> map;
//...
QMutableMapIterator<int, QWidget*> i(map);
while (i.hasNext()) {
    i.next();
    qDebug() << i.key() << ": " << i.value();
}

La fonction next() renvoie l'élément suivant de la carte 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 entre les éléments plutôt que directement vers ceux-ci. 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

Voici comment parcourir les éléments dans l’ordre inverse :

QMutableMapIterator<int, QWidget*> i(map);
i.toBack();
while (i.hasPrevious()) {
    i.previous();
    qDebug() << i.key() << ": " << i.value();
}

Si vous souhaitez rechercher toutes les occurrences d'une valeur particulière, utilisez la fonction ` findNext()` ou ` findPrevious()` dans une boucle. Par exemple :

QMutableMapIterator<int, QWidget*> i(map);
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 la carte, utilisez remove(). Si vous souhaitez modifier la valeur d'un élément, utilisez setValue().

Exemple :

QMutableMapIterator<QString, QString> i(map);
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 mutable peut être actif sur une carte donnée à un moment donné. De plus, aucune modification ne doit être effectuée directement sur la carte 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 QMapIterator et QMap::iterator.

Documentation sur les fonctions membres

QMutableMapIterator::QMutableMapIterator(QMap<Key, T> &map)

Crée un itérateur permettant de parcourir map. L'itérateur est positionné au début de la carte (avant le premier élément).

Voir également operator=().

bool QMutableMapIterator::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.

Voir aussi findPrevious().

bool QMutableMapIterator::findPrevious(const T &value)

Recherche « value » en partant de la position actuelle de l’itérateur et en remontant vers l’arrière. Renvoie « true » si un couple (clé, valeur) dont la valeur est « value » est trouvé ; sinon, renvoie « false ».

Après l’appel, si value a été trouvé, l’itérateur est positionné juste avant l’élément correspondant ; sinon, l’itérateur est positionné au début du conteneur.

Voir également findNext().

bool QMutableMapIterator::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 hasPrevious() et next().

bool QMutableMapIterator::hasPrevious() const

Renvoie ` true ` s'il reste au moins un élément derrière l'itérateur, c'est-à-dire si l'itérateur ne se trouve pas en tête du conteneur ; sinon, renvoie ` false`.

Voir également hasNext() et previous().

const Key &QMutableMapIterator::key() const

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

Après un appel à next() ou findNext(), key() est équivalent à peekPrevious().key(). Après un appel à previous() ou findPrevious(), key() est équivalent à peekNext().key().

Voir également value().

QMutableMapIterator<Key, T>::Item QMutableMapIterator::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 la valeur.

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

Voir également hasNext(), peekNext() et previous().

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

Renvoie 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(), next() et peekPrevious().

QMutableMapIterator<Key, T>::Item QMutableMapIterator::peekPrevious() const

Renvoie l'élément précédent 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é au début du conteneur entraîne des résultats indéfinis.

Voir également hasPrevious(), previous() et peekNext().

QMutableMapIterator<Key, T>::Item QMutableMapIterator::previous()

Renvoie l'élément précédent et fait reculer 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é au début du conteneur donne lieu à des résultats indéfinis.

Voir également hasPrevious(), peekPrevious() et next().

void QMutableMapIterator::remove()

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

Voir également setValue().

void QMutableMapIterator::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(), previous(), findNext() et findPrevious().

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

void QMutableMapIterator::toBack()

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

Voir aussi toFront() et previous().

void QMutableMapIterator::toFront()

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

Voir également toBack() et next().

const T &QMutableMapIterator::value() const

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

Après un appel à next() ou findNext(), value() équivaut à peekPrevious().value(). Après un appel à previous() ou findPrevious(), value() équivaut à peekNext().value().

Voir également key() et setValue().

T &QMutableMapIterator::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.

QMutableMapIterator<Key, T> &QMutableMapIterator::operator=(QMap<Key, T> &map)

Permet à l'itérateur d'opérer sur map. L'itérateur est placé au début de la carte (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.