Sur cette page

QMap::iterator Class

class QMap::iterator

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

Types publics

Fonctions publiques

iterator()
const Key &key() const
T &value() const
T &operator*() const
QMap<Key, T>::iterator &operator++()
QMap<Key, T>::iterator operator++(int)
QMap<Key, T>::iterator &operator--()
QMap<Key, T>::iterator operator--(int)
T *operator->() const
bool operator!=(const QMap<Key, T>::iterator &lhs, const QMap<Key, T>::iterator &rhs)
bool operator==(const QMap<Key, T>::iterator &lhs, const QMap<Key, T>::iterator &rhs)

Description détaillée

QMap<Key, T>::iterator vous permet de parcourir une QMap et de modifier la valeur (mais pas la clé) stockée sous une clé particulière. Si vous souhaitez parcourir un `const QMap`, vous devez utiliser ` QMap::const_iterator`. Il est généralement recommandé d’utiliser ` QMap::const_iterator ` sur un ` QMap ` non const également, sauf si vous devez modifier l’ QMap via 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 de ` QMap::iterator ` crée un itérateur non initialisé. Vous devez l’initialiser à l’aide d’une fonction ` QMap ` telle que ` QMap::begin()`, ` QMap::end()` ou ` QMap::find()` avant de pouvoir commencer l’itération. Voici une boucle typique qui affiche toutes les paires (clé, valeur) stockées dans une carte :

QMap<QString, int> map;
map.insert("January", 1);
map.insert("February", 2);
//...
map.insert("December", 12);

for (auto i = map.cbegin(), end = map.cend(); i != end; ++i)
    cout << qPrintable(i.key()) << ": " << i.value() << endl;

Contrairement à ` QHash`, qui stocke ses éléments dans un ordre arbitraire, ` QMap ` stocke ses éléments classés par clé.

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

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

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

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

Plusieurs itérateurs peuvent être utilisés sur la même carte. Si vous ajoutez des éléments à la carte, les itérateurs existants resteront valides. Si vous supprimez des éléments de la carte, les itérateurs pointant vers les éléments supprimés deviendront des itérateurs « pendants ».

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 QMap::const_iterator, QMap::key_iterator et QMap::key_value_iterator.

Documentation sur les types de membres

[alias] iterator::iterator_category

Synonyme de std::bidirectional_iterator_tag indiquant que cet itérateur est un itérateur bidirectionnel.

Documentation des fonctions membres

[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 QMap::begin() et QMap::end().

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 ` QMap::erase()` puis ` QMap::insert()`.

Voir également ` value()`.

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*().

T &iterator::operator*() const

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

Identique à ` value()`.

Voir également key().

QMap<Key, T>::iterator &iterator::operator++()

L'opérateur préfixe « ++ » (++i) fait avancer l'itérateur vers l'élément suivant de la carte et renvoie un itérateur pointant vers ce nouvel élément.

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

Voir également operator--().

QMap<Key, T>::iterator iterator::operator++(int)

L'opérateur postfixe « ++ » (i++) fait avancer l'itérateur vers l'élément suivant de la table et renvoie un itérateur pointant vers l'élément sur lequel se trouvait l'itérateur auparavant.

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

QMap<Key, T>::iterator &iterator::operator--()

L'opérateur préfixe « -- » (--i) désigne l'élément précédent comme élément courant et renvoie un itérateur pointant vers ce nouvel élément courant.

L'appel de cette fonction sur ` QMap::begin()` conduit à des résultats indéfinis.

Voir également operator++().

QMap<Key, T>::iterator iterator::operator--(int)

L'opérateur postfixe « -- » (i--) désigne l'élément précédent comme élément courant et renvoie un itérateur pointant vers l'élément qui était auparavant l'élément courant.

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

T *iterator::operator->() const

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

Voir aussi value().

Éléments non membres associés

bool operator!=(const QMap<Key, T>::iterator &lhs, const QMap<Key, T>::iterator &rhs)

Renvoie ` true ` si ` lhs ` pointe vers un élément différent de celui indiqué par l'itérateur ` rhs ` ; sinon, renvoie ` false`.

Voir également operator==().

bool operator==(const QMap<Key, T>::iterator &lhs, const QMap<Key, T>::iterator &rhs)

Renvoie ` true ` si ` lhs ` pointe vers le même élément que l'itérateur ` rhs ` ; 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.