QLinkedList::iterator Class
class QLinkedList::iteratorLa classe ` QLinkedList::iterator ` fournit un itérateur non-const de type STL pour ` QLinkedList`. En savoir plus…
Fonctions publiques
| iterator() | |
| bool | operator!=(const QLinkedList<T>::const_iterator &other) const |
| bool | operator!=(const QLinkedList<T>::iterator &other) const |
| T & | operator*() const |
| QLinkedList<T>::iterator | operator+(int j) const |
| QLinkedList<T>::iterator & | operator++() |
| QLinkedList<T>::iterator | operator++(int) |
| QLinkedList<T>::iterator & | operator+=(int j) |
| QLinkedList<T>::iterator | operator-(int j) const |
| QLinkedList<T>::iterator & | operator--() |
| QLinkedList<T>::iterator | operator--(int) |
| QLinkedList<T>::iterator & | operator-=(int j) |
| T * | operator->() const |
| bool | operator==(const QLinkedList<T>::const_iterator &other) const |
| bool | operator==(const QLinkedList<T>::iterator &other) const |
Description détaillée
QLinkedList propose à la fois des itérateurs de type STL et des itérateurs de type Java. Les itérateurs de type STL sont de niveau plus bas 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 de leur familiarité.
QLinkedList<T>::iterator vous permet de parcourir une QLinkedList<T> et de modifier l'élément de la liste associé à l'itérateur. Si vous souhaitez parcourir une `const QLinkedList`, utilisez plutôt ` QLinkedList::const_iterator `. Il est généralement recommandé d’utiliser ` QLinkedList::const_iterator ` sur une `non-const QLinkedList ` également, sauf si vous devez modifier l’ QLinkedList 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 de ` QLinkedList::iterator ` crée un itérateur non initialisé. Vous devez l'initialiser à l'aide d'une fonction telle que ` QLinkedList::begin()`, ` QLinkedList::end()` ou ` QLinkedList::insert()` avant de pouvoir commencer à itérer. Voici une boucle typique qui affiche tous les éléments stockés dans une liste :
QLinkedList<QString> list;
list.append("January");
list.append("February");
...
list.append("December");
QLinkedList<QString>::iterator i;
for (i = list.begin(); i != list.end(); ++i)
cout << *i << Qt::endl;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 la liste :
QLinkedList<QString> list;
...
QLinkedList<QString>::iterator it = std::find(list.begin(),
list.end(), "Joel");
if (it != list.end())
cout << "Found Joel" << Qt::endl;Voyons quelques exemples de ce que l'on peut faire avec une ` QLinkedList::iterator ` et que l'on ne peut pas faire avec une ` QLinkedList::const_iterator`. Voici un exemple qui incrémente de 2 chaque valeur stockée dans une ` QLinkedList<int>` :
QLinkedList<int>::iterator i;
for (i = list.begin(); i != list.end(); ++i)
*i += 2;Voici un exemple qui supprime tous les éléments commençant par un trait de soulignement dans une liste QLinkedList<QString> :
QLinkedList<QString> list;
...
QLinkedList<QString>::iterator i = list.begin();
while (i != list.end()) {
if ((*i).startsWith('_'))
i = list.erase(i);
else
++i;
}L'appel à QLinkedList::erase() supprime de la liste l'élément pointé par l'itérateur et renvoie un itérateur vers l'élément suivant. Voici une autre façon de supprimer un élément lors d'une itération :
QLinkedList<QString>::iterator i = list.begin();
while (i != list.end()) {
QLinkedList<QString>::iterator previous = i;
++i;
if ((*previous).startsWith('_'))
list.erase(previous);
}On pourrait être tenté d’écrire un code comme celui-ci :
// WRONG
while (i != list.end()) {
if ((*i).startsWith('_'))
list.erase(i);
++i;
}Cependant, cela risque de provoquer un plantage dans ` ++i`, car ` i ` devient un itérateur orphelin après l’appel à ` erase()`.
Plusieurs itérateurs peuvent être utilisés sur la même liste. Si vous ajoutez des éléments à la liste, les itérateurs existants resteront valides. Si vous supprimez des éléments de la liste, les itérateurs pointant vers les éléments supprimés deviendront des itérateurs « pendants ».
Avertissement : 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 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 « QLinkedList::const_iterator » et « QMutableLinkedListIterator ».
Documentation sur les 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 également QLinkedList::begin() et QLinkedList::end().
bool iterator::operator!=(const QLinkedList<T>::const_iterator &other) const
bool iterator::operator!=(const QLinkedList<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==().
T &iterator::operator*() const
Renvoie une référence modifiable vers l'élément actuel.
Vous pouvez modifier la valeur d'un élément en utilisant l'opérateur *() à gauche d'une affectation, par exemple :
if (*it == "Hello")
*it = "Bonjour";Voir aussi ` operator->()`.
QLinkedList<T>::iterator iterator::operator+(int j) const
Renvoie un itérateur vers l'élément situé à j positions en avant par rapport à cet itérateur. (Si j est négatif, l'itérateur se déplace vers l'arrière.)
Cette opération peut être lente lorsque la valeur de ` j ` est élevée.
Voir également operator-().
QLinkedList<T>::iterator &iterator::operator++()
L'opérateur préfixe ++ (++it) fait avancer l'itérateur vers l'élément suivant de la liste et renvoie un itérateur pointant vers le nouvel élément courant.
L'appel de cette fonction sur QLinkedList::end() conduit à des résultats indéfinis.
Voir également operator--().
QLinkedList<T>::iterator iterator::operator++(int)
L'opérateur postfixe ++ (it++) fait avancer l'itérateur vers l'élément suivant de la liste et renvoie un itérateur vers l'élément sur lequel se trouvait l'itérateur auparavant.
Il s'agit d'une fonction surchargée.
QLinkedList<T>::iterator &iterator::operator+=(int j)
Fait avancer l'itérateur de j éléments. (Si j est négatif, l'itérateur recule.)
Voir également operator-=() et operator+().
QLinkedList<T>::iterator iterator::operator-(int j) const
Renvoie un itérateur vers l'élément situé à j positions en arrière par rapport à cet itérateur. (Si j est négative, l'itérateur se déplace vers l'avant.)
Cette opération peut être lente lorsque la valeur de ` j ` est élevée.
Voir également operator+().
QLinkedList<T>::iterator &iterator::operator--()
L'opérateur préfixe (--it) désigne l'élément précédent comme élément courant et renvoie un itérateur vers ce nouvel élément courant.
L'appel de cette fonction sur ` QLinkedList::begin()` conduit à des résultats indéfinis.
Voir également operator++().
QLinkedList<T>::iterator iterator::operator--(int)
L'opérateur postfixe – (it--) désigne l'élément précédent comme élément actuel et renvoie un itérateur vers l'élément qui était auparavant l'élément actuel.
Il s'agit d'une fonction surchargée.
QLinkedList<T>::iterator &iterator::operator-=(int j)
Fait reculer l'itérateur de j éléments. (Si j est négatif, l'itérateur avance.)
Voir aussi ` operator+=()` et ` operator-()`.
T *iterator::operator->() const
Renvoie un pointeur vers l'élément actuel.
Voir aussi operator*().
bool iterator::operator==(const QLinkedList<T>::const_iterator &other) const
bool iterator::operator==(const QLinkedList<T>::iterator &other) const
Renvoie ` true ` si ` other ` pointe vers 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.