Sur cette page

QMutableSetIterator Class

template <typename T> class QMutableSetIterator

La classe QMutableSetIterator fournit un itérateur non-const de style Java pour QSet. Plus...

En-tête : #include <QMutableSetIterator>
CMake : find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake : QT += core

Fonctions publiques

QMutableSetIterator(QSet<T> &set)
bool findNext(const T &value)
bool hasNext() const
const T &next()
const T &peekNext() const
void remove()
void toBack()
void toFront()
const T &value() const
QMutableSetIterator<T> &operator=(QSet<T> &set)

Description détaillée

QSet possède à la fois des itérateurs de style Java et des itérateurs de style STL. Les itérateurs de style STL sont plus efficaces et devraient être préférés.

QMutableSetIterator<T> vous permet d'itérer sur un QSet<T> et de supprimer des éléments de l'ensemble au fur et à mesure de l'itération. Si vous ne souhaitez pas modifier l'ensemble (ou si vous disposez d'un const QSet), utilisez plutôt QSetIterator<T>, qui est légèrement plus rapide.

Le constructeur de QMutableSetIterator prend un QSet comme argument. Après la construction, l'itérateur est situé au tout début de l'ensemble (avant le premier élément). Voici comment itérer sur tous les éléments de manière séquentielle :

QSet<float> set;
//...
QMutableSetIterator<float> i(set);
while (i.hasNext())
    float f = i.next();

La fonction next() renvoie l'élément suivant de l'ensemble et fait avancer l'itérateur. Contrairement aux itérateurs de style STL, les itérateurs de style Java pointent entre les éléments plutôt que directement sur les éléments. Le premier appel à next() fait avancer l'itérateur à la position située entre le premier et le deuxième élément, et renvoie le premier élément ; le deuxième appel à next() fait avancer l'itérateur à la position située entre le deuxième et le troisième élément, et renvoie le deuxième élément ; et ainsi de suite.

Les itérateurs de style Java pointent entre les éléments

Si vous souhaitez supprimer des éléments au fur et à mesure que vous itérez sur l'ensemble, utilisez remove().

Un seul itérateur mutable peut être actif sur un ensemble donné à tout moment. En outre, aucune modification ne doit être apportée directement à l'ensemble lorsque l'itérateur est actif (et non par l'intermédiaire de l'itérateur), car cela pourrait invalider l'itérateur et entraîner un comportement indéfini.

Voir également QSetIterator et QSet::iterator.

Documentation sur les fonctions membres

QMutableSetIterator::QMutableSetIterator(QSet<T> &set)

Construit un itérateur pour parcourir set. L'itérateur est placé au début de l'ensemble (avant le premier élément).

Voir aussi operator=().

bool QMutableSetIterator::findNext(const T &value)

Recherche value à partir de la position actuelle de l'itérateur. Renvoie true si value est trouvé, sinon false.

Après l'appel, si value a été trouvé, l'itérateur est positionné juste après l'élément correspondant ; sinon, l'itérateur est positionné à l'arrière du conteneur.

bool QMutableSetIterator::hasNext() const

Renvoie true s'il y a au moins un élément avant l'itérateur, c'est-à-dire que l'itérateur n' est pas à l'arrière du conteneur ; sinon, renvoie false.

Voir aussi next().

const T &QMutableSetIterator::next()

Renvoie l'élément suivant et fait avancer l'itérateur d'une position.

L'appel de cette fonction à un itérateur situé à l'arrière du conteneur conduit à des résultats indéfinis.

Voir aussi hasNext() et peekNext().

const T &QMutableSetIterator::peekNext() const

Renvoie l'élément suivant sans déplacer l'itérateur.

L'appel de cette fonction à un itérateur situé à l'arrière du conteneur conduit à des résultats indéfinis.

Voir aussi hasNext() et next().

void QMutableSetIterator::remove()

Supprime le dernier élément qui a été sauté à l'aide de l'une des fonctions de traversée (next(), findNext()).

Exemple :

QMutableSetIterator<int> i(set);
while (i.hasNext()) {
    int val = i.next();
    if (val < -32768 || val > 32767)
        i.remove();
}

Voir aussi value().

void QMutableSetIterator::toBack()

Déplace l'itérateur à l'arrière du conteneur (après le dernier élément).

Voir également toFront().

void QMutableSetIterator::toFront()

Déplace l'itérateur à l'avant du conteneur (avant le premier élément).

Voir aussi toBack() et next().

const T &QMutableSetIterator::value() const

Renvoie la valeur du dernier élément qui a été sauté en utilisant next() ou findNext().

QMutableSetIterator<T> &QMutableSetIterator::operator=(QSet<T> &set)

Fait fonctionner l'itérateur sur set. L'itérateur est placé au début de l'ensemble (avant le premier élément).

Voir aussi toFront() et toBack().

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