Sur cette page

QMultiMap::iterator Class

class QMultiMap::iterator

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

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 de parcourir une QMultiMap et de modifier la valeur (mais pas la clé) stockée sous une clé particulière. Si vous souhaitez parcourir un `const QMultiMap`, vous devez utiliser ` QMultiMap::const_iterator`. Il est généralement recommandé d’utiliser ` QMultiMap::const_iterator ` sur un ` QMultiMap ` non const également, sauf si vous devez modifier l’ QMultiMap 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 ` QMultiMap::iterator ` crée un itérateur non initialisé. Vous devez l'initialiser à l'aide d'une fonction ` QMultiMap ` telle que ` QMultiMap::begin()`, ` QMultiMap::end()` ou ` QMultiMap::find()` avant de pouvoir commencer l'itération. Voici une boucle typique qui affiche 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 partageant la même clé apparaîtront consécutivement, de la valeur la plus récente à la plus ancienne.

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

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

Pour supprimer des éléments d’une « QMultiMap », vous pouvez utiliser la méthode « 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 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 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

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

const Key &iterator::key() const

Renvoie la clé de l'élément actuel 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 ` QMultiMap::erase()` puis ` QMultiMap::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()`.

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

L'opérateur préfixe ` ++ ` (++i) fait avancer l'itérateur vers l'élément suivant de la multi-map 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 également operator--().

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

L'opérateur de postfixe « ++ » (i++) fait avancer l'itérateur vers l'élément suivant de la multi-map et renvoie un itérateur vers l'élément précédemment sélectionné.

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

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

L'opérateur préfixe « -- » (--i) définit l'élément précédent comme élément 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 également operator++().

QMultiMap<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 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 également operator==().

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