QSet::iterator Class
class QSet::iteratorLa classe QSet::iterator fournit un itérateur non-const de style STL pour QSet. Plus...
Types publics
Fonctions publiques
| iterator() | |
| iterator(const QSet<T>::iterator &other) | |
| bool | operator!=(const QSet<T>::iterator &other) const |
| bool | operator!=(const QSet<T>::const_iterator &other) const |
| const T & | operator*() const |
| QSet<T>::iterator & | operator++() |
| QSet<T>::iterator | operator++(int) |
| const T * | operator->() const |
| QSet<T>::iterator & | operator=(const QSet<T>::iterator &other) |
| bool | operator==(const QSet<T>::iterator &other) const |
| bool | operator==(const QSet<T>::const_iterator &other) const |
Description détaillée
QSet propose à la fois des itérateurs de style STL et des itérateurs de style Java. Les itérateurs de style STL sont plus bas niveau et plus lourds à utiliser ; en revanche, ils sont légèrement plus rapides et, pour les développeurs qui connaissent déjà STL, ils ont l'avantage de la familiarité.
QSet<T>::iterator> vous permet d'itérer sur un site QSet et de supprimer des éléments (à l'aide de QSet::erase()) pendant l'itération. (QSet ne permet pas de modifier une valeur par l'intermédiaire d'un itérateur, car cela nécessiterait potentiellement de déplacer la valeur dans la table de hachage interne utilisée par QSet). Si vous souhaitez itérer sur une const QSet, vous devez utiliser QSet::const_iterator. Il est généralement conseillé d'utiliser QSet::const_iterator sur une valeur non constante QSet, à moins que vous n'ayez besoin de modifier QSet 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 de QSet::iterator crée un itérateur non initialisé. Vous devez l'initialiser à l'aide d'une fonction telle que QSet::begin(), QSet::end() ou QSet::insert() avant de pouvoir commencer l'itération. Voici une boucle typique qui imprime tous les éléments stockés dans un ensemble :
QSet<QString> set = {"January", "February", /*...*/ "December"} ;// i est un QSet<QString>::iteratorfor(auto i = set.begin(), end = set.end() ; i != end ; ++i) qDebug() << *i;
Voici une boucle qui supprime certains éléments (tous ceux qui commencent par "J") d'un ensemble tout en itérant :
QSet<QString> set = {"January", "February", /*...*/ "December"}; auto i = set.begin(); while (i != set.end()) { if ((*i).startsWith('J')) { i = set.erase(i); } else { ++i; } }
Les itérateurs de style STL peuvent être utilisés comme arguments de generic algorithms. Par exemple, voici comment trouver un élément dans l'ensemble en utilisant l'algorithme qFind() :
QSet<QString> set; //... const auto predicate = [](const QString &s) { return s.compare("Jeanette", Qt::CaseInsensitive) == 0; }; QSet<QString>::iterator it = std::find_if(set.begin(), set.end(), predicate); if (it != set.end()) cout << "Found Jeanette" << endl;
Plusieurs itérateurs peuvent être utilisés sur le même ensemble.
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 le problème du partage implicite des itérateurs.
Voir aussi QSet::const_iterator et QMutableSetIterator.
Documentation sur les types de membres
iterator::iterator_category
Synonymes de std::bidirectional_iterator_tag indiquant que ces itérateurs sont des itérateurs bidirectionnels.
Documentation des fonctions membres
iterator::iterator()
Construit un itérateur non initialisé.
Les fonctions telles que operator*() 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 QSet::begin() et QSet::end().
iterator::iterator(const QSet<T>::iterator &other)
Construit une copie de other.
bool iterator::operator!=(const QSet<T>::iterator &other) const
Renvoie true si other pointe vers un élément différent de cet itérateur ; sinon, renvoie false.
Voir aussi operator==().
const T &iterator::operator*() const
Renvoie une référence à l'élément en cours.
Voir aussi operator->().
QSet<T>::iterator &iterator::operator++()
L'opérateur préfixe ++ (++it) fait passer l'itérateur à l'élément suivant de l'ensemble et renvoie un itérateur au nouvel élément courant.
L'appel de cette fonction sur QSet<T>::constEnd() conduit à des résultats indéfinis.
QSet<T>::iterator iterator::operator++(int)
L'opérateur postfixe ++ (it++) fait passer l'itérateur à l'élément suivant de l'ensemble et renvoie un itérateur à l'élément courant précédent.
const T *iterator::operator->() const
Renvoie un pointeur sur l'élément courant.
Voir aussi operator*().
QSet<T>::iterator &iterator::operator=(const QSet<T>::iterator &other)
Attribue other à cet itérateur.
bool iterator::operator==(const QSet<T>::iterator &other) const
Renvoie true si other pointe sur le même élément que cet itérateur ; 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.