QMutableMapIterator Class
template <typename Key, typename T> class QMutableMapIteratorLa classe QMutableMapIterator fournit un itérateur non-const de style Java pour QMap. 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 possède à la fois des itérateurs de style Java et des itérateurs de style STL. Les itérateurs de style STL sont plus efficaces et doivent être privilégiés.
QMutableMapIterator<Key, T> vous permet d'itérer sur une QMap et de modifier la carte. Si vous ne souhaitez pas modifier la carte (ou si vous disposez d'un const QMap), utilisez plutôt QMapIterator, qui est légèrement plus rapide.
Le constructeur de QMutableMapIterator prend un QMap comme argument. Après la construction, l'itérateur est situé au tout début de la carte (avant le premier élément). Voici comment itérer sur 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 dans la carte et fait avancer l'itérateur. Les fonctions key() et value() renvoient la clé et la valeur du dernier élément qui a été sauté.
Contrairement aux itérateurs de style STL, les itérateurs de style Java pointent entre les éléments plutôt que directement sur les éléments. Le premier appel à next() fait avancer l'itérateur à 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 à la position située entre le deuxième et le troisième élément, et ainsi de suite.
Voici comment itérer sur 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 trouver toutes les occurrences d'une valeur particulière, utilisez 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 à tout moment. En outre, aucune modification ne doit être apportée directement à la carte lorsque l'itérateur est actif (et non par l'intermédiaire de l'itérateur), car cela pourrait invalider l'itérateur et entraîner un comportement indéfini.
Voir également QMapIterator et QMap::iterator.
Documentation des fonctions membres
QMutableMapIterator::QMutableMapIterator(QMap<Key, T> &map)
Construit un itérateur pour parcourir map. L'itérateur est placé au début de la carte (avant le premier élément).
Voir aussi operator=().
bool QMutableMapIterator::findNext(const T &value)
Recherche value à partir de la position actuelle de l'itérateur. Retourne true si une paire (clé, valeur) avec la valeur value est trouvée ; sinon, retourne 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é à l'arrière du conteneur.
Voir également findPrevious().
bool QMutableMapIterator::findPrevious(const T &value)
Recherche value à partir de la position actuelle de l'itérateur vers l'arrière. Retourne true si une paire (clé, valeur) avec la valeur value est trouvée ; sinon, retourne 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é à l'avant du conteneur.
Voir également findNext().
bool QMutableMapIterator::hasNext() const
Renvoie true s'il y a au moins un élément avant l'itérateur, c'est-à-dire que l'itérateur n' est pas à l'arrière du conteneur ; sinon, renvoie false.
Voir aussi hasPrevious() et next().
bool QMutableMapIterator::hasPrevious() const
Renvoie true s'il y a au moins un élément derrière l'itérateur, c'est-à-dire que l'itérateur n' est pas à l'avant du conteneur ; sinon, renvoie false.
Voir aussi 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 traversée (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 key() sur la valeur de retour pour obtenir la clé de l'élément, et value() pour obtenir la valeur.
L'appel de cette fonction sur un itérateur situé à l'arrière du conteneur conduit à 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 key() sur la valeur de retour pour obtenir la clé de l'élément, et value() pour obtenir la valeur.
L'appel de cette fonction sur un itérateur situé à l'arrière du conteneur conduit à des résultats indéfinis.
Voir aussi 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 key() sur la valeur de retour pour obtenir la clé de l'élément, et value() pour obtenir la valeur.
L'appel de cette fonction sur un itérateur situé à l'avant du conteneur conduit à des résultats indéfinis.
Voir aussi 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 key() sur la valeur de retour pour obtenir la clé de l'élément, et value() pour obtenir la valeur.
L'appel de cette fonction à un itérateur situé à l'avant du conteneur conduit à des résultats indéfinis.
Voir également hasPrevious(), peekPrevious() et next().
void QMutableMapIterator::remove()
Supprime le dernier élément qui a été sauté à l'aide de l'une des fonctions de traversée (next(), previous(), findNext(), findPrevious()).
Voir aussi 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 déplacement par value.
Les fonctions de traversée sont next(), previous(), findNext() et findPrevious().
Voir également key(), value() et remove().
void QMutableMapIterator::toBack()
Déplace l'itérateur à l'arrière du conteneur (après le dernier élément).
Voir aussi toFront() et previous().
void QMutableMapIterator::toFront()
Déplace l'itérateur à l'avant du conteneur (avant le premier élément).
Voir aussi toBack() et next().
const T &QMutableMapIterator::value() const
Renvoie la valeur du dernier élément qui a été sauté en utilisant l'une des fonctions de traversée (next(), previous(), findNext(), findPrevious()).
Après un appel à next() ou findNext(), value() est équivalent à peekPrevious().value(). Après un appel à previous() ou findPrevious(), value() est équivalent à peekNext().value().
Voir également key() et setValue().
T &QMutableMapIterator::value()
Renvoie une référence non-const à la valeur du dernier élément ayant fait l'objet d'un saut à l'aide de l'une des fonctions de traversée.
QMutableMapIterator<Key, T> &QMutableMapIterator::operator=(QMap<Key, T> &map)
Fait fonctionner l'itérateur sur map. L'itérateur est placé au début de la carte (avant le premier élément).
© 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.