Sur cette page

QMultiMap::iterator Class

class QMultiMap::iterator

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

Types publics

Fonctions publiques

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

Description détaillée

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

Contrairement à QMultiHash, qui stocke ses éléments dans un ordre arbitraire, QMultiMap stocke ses éléments classés par clé. Les éléments qui partagent la même clé apparaissent consécutivement, de la valeur la plus récemment insérée à la moins récemment insérée.

Voici un exemple qui incrémente de 2 chaque valeur stockée dans QMultiMap:

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

Pour supprimer des éléments d'un site QMultiMap, vous pouvez utiliser erase_if(QMultiMap<Key, T> &map, Predicate pred) :

erase_if(multimap, [](const QMultiMap<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 QMultiMap::const_iterator, QMultiMap::key_iterator, et QMultiMap::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 QMultiMap::begin() et QMultiMap::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 QMultiMap::erase() suivi de QMultiMap::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().

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

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

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

Voir aussi operator--().

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

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

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

QMultiMap<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 QMultiMap::begin() conduit à des résultats indéfinis.

Voir aussi operator++().

QMultiMap<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 QMultiMap<Key, T>::iterator &lhs, const QMultiMap<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 QMultiMap<Key, T>::iterator &lhs, const QMultiMap<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.