Sur cette page

QSet::iterator Class

class QSet::iterator

La classe ` QSet::iterator ` fournit un itérateur non-const de type STL pour ` QSet`. En savoir 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 type STL et des itérateurs de type Java. Les itérateurs de type STL sont de plus bas niveau et plus fastidieux à utiliser ; en revanche, ils sont légèrement plus rapides et, pour les développeurs qui connaissent déjà la STL, présentent l'avantage d'être familiers.

QSet<T>::iterator vous permet de parcourir une QSet et de supprimer des éléments (à l’aide de QSet::erase()) au fur et à mesure du parcours. (QSet ne vous permet pas de modifier une valeur via un itérateur, car cela pourrait nécessiter le déplacement de la valeur dans la table de hachage interne utilisée par QSet.) Si vous souhaitez parcourir un ` QSet` de type `const`, vous devez utiliser ` QSet::const_iterator`. Il est généralement recommandé d’utiliser ` QSet::const_iterator ` également sur un ` QSet ` non `const`, sauf si vous devez modifier la ` QSet ` 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 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 type qui affiche tous les éléments stockés dans un ensemble :

QSet<QString> set = {"Janvier", "Février", /*...*/ "Décembre"};

// i est un QSet<QString>::iterator
for (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 au fur et à mesure de l'itération :

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 type STL peuvent être utilisés comme arguments de la fonction ` generic algorithms`. Par exemple, voici comment rechercher un élément dans l'ensemble à l'aide de 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;

Il est possible d'utiliser plusieurs itérateurs sur un même ensemble.

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 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 bidirectionnels.

Documentation des fonctions membres

iterator::iterator()

Crée 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)

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

bool iterator::operator!=(const QSet<T>::const_iterator &other) const

bool iterator::operator==(const QSet<T>::const_iterator &other) const

const T &iterator::operator*() const

Renvoie une référence à l'élément actuel.

Voir aussi operator->().

QSet<T>::iterator &iterator::operator++()

L'opérateur préfixe ++ (++it) fait avancer l'itérateur vers l'élément suivant de l'ensemble et renvoie un itérateur pointant vers le 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 avancer l'itérateur vers l'élément suivant de l'ensemble et renvoie un itérateur vers l'élément sur lequel il se trouvait précédemment.

const T *iterator::operator->() const

Renvoie un pointeur vers l'élément actuel.

Voir aussi operator*().

QSet<T>::iterator &iterator::operator=(const QSet<T>::iterator &other)

Attribue la valeur « other » à cet itérateur.

bool iterator::operator==(const QSet<T>::iterator &other) const

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