QMutableListIterator Class
template <typename T> class QMutableListIteratorLa classe QMutableListIterator fournit un itérateur non-const de style Java pour QList, QQueue et QStack. Plus...
| En-tête : | #include <QMutableListIterator> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Core)target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake : | QT += core |
Fonctions publiques
| QMutableListIterator(QList<T> &list) | |
| bool | findNext(const T &value) |
| bool | findPrevious(const T &value) |
| bool | hasNext() const |
| bool | hasPrevious() const |
| void | insert(const T &value) |
| T & | next() |
| T & | peekNext() const |
| T & | peekPrevious() const |
| T & | previous() |
| void | remove() |
| void | setValue(const T &value) const |
| void | toBack() |
| void | toFront() |
| const T & | value() const |
| T & | value() |
| QMutableListIterator<T> & | operator=(QList<T> &list) |
Description détaillée
QList 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 doivent être préférés.
Une alternative à l'utilisation d'itérateurs est l'utilisation de positions d'index. La plupart des fonctions membres de QList prennent un index comme premier paramètre, ce qui permet d'accéder, d'insérer et de supprimer des éléments sans utiliser d'itérateurs.
QMutableListIterator<T> vous permet d'itérer sur une QList<T> (ou une QQueue<T>) et de modifier la liste. Si vous ne souhaitez pas modifier la liste (ou si vous avez un const QList), utilisez plutôt QListIterator<T>, légèrement plus rapide.
Le constructeur de QMutableListIterator prend un QList comme argument. Après la construction, l'itérateur est situé au tout début de la liste (avant le premier élément). Voici comment itérer sur tous les éléments de manière séquentielle :
QList<float> list; //... QMutableListIterator<float> i(list); while (i.hasNext()) float f = i.next();
La fonction next() renvoie l'élément suivant de la liste 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.
Voici comment itérer sur les éléments dans l'ordre inverse :
QMutableListIterator<float> i(list); i.toBack(); while (i.hasPrevious()) float f = i.previous();
Si vous souhaitez trouver toutes les occurrences d'une valeur particulière, utilisez findNext() ou findPrevious() dans une boucle.
Si vous souhaitez supprimer des éléments au fur et à mesure que vous parcourez la liste, utilisez remove(). Pour modifier la valeur d'un élément, utilisez setValue(). Pour insérer un nouvel élément dans la liste, utilisez insert().
Exemple :
QMutableListIterator<int> i(list); while (i.hasNext()) { int val = i.next(); if (val < 0) { i.setValue(-val); } else if (val == 0) { i.remove(); } }
L'exemple parcourt une liste en remplaçant les nombres négatifs par leurs valeurs absolues et en éliminant les zéros.
Un seul itérateur mutable peut être actif sur une liste donnée à tout moment. En outre, aucune modification ne doit être apportée directement à la liste 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 QListIterator et QList::iterator.
Documentation sur les fonctions membres
QMutableListIterator::QMutableListIterator(QList<T> &list)
Construit un itérateur pour parcourir list. L'itérateur est placé au début de la liste (avant le premier élément).
Voir aussi operator=().
bool QMutableListIterator::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.
Voir également findPrevious().
bool QMutableListIterator::findPrevious(const T &value)
Recherche value à partir de la position actuelle de l'itérateur vers l'arrière. Renvoie true si value est trouvé, sinon renvoie false.
Après l'appel, si value a été trouvé, l'itérateur est positionné juste avant l'élément correspondant ; sinon, l'itérateur est positionné à l'avant du conteneur.
Voir également findNext().
bool QMutableListIterator::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 hasPrevious() et next().
bool QMutableListIterator::hasPrevious() const
Renvoie true s'il y a au moins un élément derrière l'itérateur, c'est-à-dire que l'itérateur n' est pas à l'avant du conteneur ; sinon, renvoie false.
Voir aussi hasNext() et previous().
void QMutableListIterator::insert(const T &value)
Insère value à la position actuelle de l'itérateur. Après l'appel, l'itérateur se trouve juste après l'élément inséré.
Voir également remove() et setValue().
T &QMutableListIterator::next()
Renvoie une référence à 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 entraîne des résultats indéfinis.
Voir aussi hasNext(), peekNext() et previous().
T &QMutableListIterator::peekNext() const
Renvoie une référence à 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(), next() et peekPrevious().
T &QMutableListIterator::peekPrevious() const
Renvoie une référence à l'élément précédent, sans déplacer l'itérateur.
L'appel de cette fonction à un itérateur situé à l'avant du conteneur conduit à des résultats indéfinis.
Voir aussi hasPrevious(), previous() et peekNext().
T &QMutableListIterator::previous()
Renvoie une référence à l'élément précédent et fait reculer l'itérateur d'une position.
L'appel de cette fonction à un itérateur situé à l'avant du conteneur conduit à des résultats indéfinis.
Voir aussi hasPrevious(), peekPrevious() et next().
void QMutableListIterator::remove()
Supprime le dernier élément qui a été sauté à l'aide de l'une des fonctions de traversée (next(), previous(), findNext(), findPrevious()).
Exemple :
QMutableListIterator<int> i(list); while (i.hasNext()) { int val = i.next(); if (val < -32768 || val > 32767) i.remove(); }
Voir aussi insert() et setValue().
void QMutableListIterator::setValue(const T &value) const
Remplace la valeur du dernier élément qui a été sauté à l'aide de l'une des fonctions de déplacement par value.
Les fonctions de traversée sont next(), previous(), findNext() et findPrevious().
Exemple :
QMutableListIterator<double> i(list); while (i.hasNext()) { double val = i.next(); i.setValue(std::sqrt(val)); }
Voir également value(), remove() et insert().
void QMutableListIterator::toBack()
Déplace l'itérateur à l'arrière du conteneur (après le dernier élément).
Voir aussi toFront() et previous().
void QMutableListIterator::toFront()
Déplace l'itérateur à l'avant du conteneur (avant le premier élément).
Voir aussi toBack() et next().
const T &QMutableListIterator::value() const
Renvoie la valeur du dernier élément qui a été sauté en utilisant l'une des fonctions de traversée (next(), previous(), findNext(), findPrevious()).
Après un appel à next() ou findNext(), value() est équivalent à peekPrevious(). Après un appel à previous() ou findPrevious(), value() est équivalent à peekNext().
Voir aussi setValue().
T &QMutableListIterator::value()
Renvoie une référence non-const à la valeur du dernier élément ayant fait l'objet d'un saut à l'aide de l'une des fonctions de traversée.
Il s'agit d'une fonction surchargée.
QMutableListIterator<T> &QMutableListIterator::operator=(QList<T> &list)
Permet à l'itérateur d'opérer sur list. L'itérateur est placé en tête de liste (avant le premier élément).
© 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.