Sur cette page

QMap::iterator Class

class QMap::iterator

La classe QMap::iterator fournit un itérateur non-const de style STL pour QMap. Plus d'informations...

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 d'itérer sur un QMap et de modifier la valeur (mais pas la clé) stockée sous une clé particulière. Si vous souhaitez itérer sur un const QMap, vous devez utiliser QMap::const_iterator. Il est généralement conseillé d'utiliser QMap::const_iterator sur un QMap non constant, à moins que vous n'ayez besoin de modifier le QMap par l'intermédiaire de 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 QMap::iterator crée un itérateur non initialisé. Vous devez l'initialiser à l'aide d'une fonction QMap comme QMap::begin(), QMap::end() ou QMap::find() avant de pouvoir commencer l'itération. Voici une boucle typique qui imprime 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 QMap:

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

Pour supprimer des éléments d'un site 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 qui pointent vers les éléments supprimés deviendront des itérateurs pendants.

Attention : Les itérateurs sur des conteneurs implicitement partagés ne fonctionnent pas exactement comme les itérateurs STL. Vous devez éviter de copier un conteneur lorsque des itérateurs sont actifs sur ce conteneur. Pour plus d'informations, lisez Implicit sharing iterator problem.

Voir aussi 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

iterator::iterator()

Construit un itérateur non initialisé.

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

Voir aussi QMap::begin() et QMap::end().

const Key &iterator::key() const

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

Il n'existe pas de moyen direct de modifier la clé d'un élément par l'intermédiaire d'un itérateur, mais il est possible de le faire en appelant QMap::erase() suivi de QMap::insert().

Voir aussi value().

T &iterator::value() const

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

Vous pouvez modifier la valeur d'un élément en utilisant value() du côté gauche d'une affectation, par exemple :

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

Voir aussi key() et operator*().

T &iterator::operator*() const

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

Identique à value().

Voir aussi key().

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

L'opérateur préfixe ++ (++i) fait passer l'itérateur à l'élément suivant de la carte et renvoie un itérateur vers le nouvel élément courant.

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

Voir aussi operator--().

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

L'opérateur postfixe ++ (i++) fait passer l'itérateur à l'élément suivant de la carte et renvoie un itérateur à l'élément courant précédent.

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

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

L'opérateur préfixe -- (--i) rend l'élément précédent courant et renvoie un itérateur pointant vers le nouvel élément courant.

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

Voir aussi operator++().

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

L'opérateur postfixe -- (i--) rend l'élément précédent courant et renvoie un itérateur pointant vers l'élément courant précédent.

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

T *iterator::operator->() const

Renvoie un pointeur sur la valeur de l'élément en cours.

Voir également value().

Non-membres apparenté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 l'itérateur rhs; sinon, renvoie false.

Voir aussi operator==().

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

Renvoie true si lhs pointe sur le même élément que l'itérateur rhs; sinon, renvoie false.

Voir aussi 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.