Sur cette page

QMutableLinkedListIterator Class

template <typename T> class QMutableLinkedListIterator

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

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

Fonctions publiques

QMutableLinkedListIterator(QLinkedList<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()
QMutableLinkedListIterator<T> &operator=(QLinkedList<T> &list)

Description détaillée

QLinkedList possède à la fois des itérateurs de style Java et des itérateurs de style STL. Les itérateurs de style Java sont de plus haut niveau et plus faciles à utiliser que les itérateurs de style STL ; en revanche, ils sont légèrement moins efficaces.

QMutableLinkedListIterator<T> vous permet d'itérer sur une QLinkedList<T> et de modifier la liste. Si vous ne souhaitez pas modifier la liste (ou si vous disposez d'un const QLinkedList), utilisez plutôt QLinkedListIterator<T>, légèrement plus rapide.

Le constructeur de QMutableLinkedListIterator prend un QLinkedList 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 :

QLinkedList<float> list ;...QMutableLinkedListIterator<float> i(list) ;while (i.hasNext())    qDebug() << 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.

Illustration de l'utilisation d'itérateurs de style Java dans Qt

Voici comment itérer sur les éléments dans l'ordre inverse :

QMutableLinkedListIterator<float> i(list) ; i.toBack() ;while (i.hasPrevious())    qDebug() << 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 :

QMutableLinkedListIterator<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 QLinkedListIterator et QLinkedList::iterator.

Documentation des fonctions membres

QMutableLinkedListIterator::QMutableLinkedListIterator(QLinkedList<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 QMutableLinkedListIterator::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 QMutableLinkedListIterator::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 QMutableLinkedListIterator::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 QMutableLinkedListIterator::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 QMutableLinkedListIterator::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 &QMutableLinkedListIterator::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 &QMutableLinkedListIterator::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 &QMutableLinkedListIterator::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 &QMutableLinkedListIterator::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 QMutableLinkedListIterator::remove()

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

Exemple :

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

Voir aussi insert() et setValue().

void QMutableLinkedListIterator::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 :

QMutableLinkedListIterator<double> i(list);
while (i.hasNext()) {
    double val = i.next();
    i.setValue(std::sqrt(val));
}

Voir également value(), remove() et insert().

void QMutableLinkedListIterator::toBack()

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

Voir aussi toFront() et previous().

void QMutableLinkedListIterator::toFront()

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

Voir aussi toBack() et next().

const T &QMutableLinkedListIterator::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 &QMutableLinkedListIterator::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.

QMutableLinkedListIterator<T> &QMutableLinkedListIterator::operator=(QLinkedList<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).

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.