QFutureIterator Class
template <typename T> class QFutureIteratorLa classe QFutureIterator fournit un itérateur constant de style Java pour QFuture. Plus...
| En-tête : | #include <QFutureIterator> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Core)target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake : | QT += core |
Note : Toutes les fonctions de cette classe sont réentrantes.
Fonctions publiques
| QFutureIterator(const QFuture<T> &future) | |
| bool | findNext(const T &value) |
| bool | findPrevious(const T &value) |
| bool | hasNext() const |
| bool | hasPrevious() const |
| const T & | next() |
| const T & | peekNext() const |
| const T & | peekPrevious() const |
| const T & | previous() |
| void | toBack() |
| void | toFront() |
| QFutureIterator<T> & | operator=(const QFuture<T> &future) |
Description détaillée
QFuture 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.
Une alternative à l'utilisation des itérateurs est l'utilisation des positions d'index. Certaines fonctions membres de QFuture prennent un index comme premier paramètre, ce qui permet d'accéder aux résultats sans utiliser d'itérateurs.
QFutureIterator<T> vous permet d'itérer sur QFuture<T>. Notez qu'il n'existe pas d'itérateur mutable pour QFuture (contrairement aux autres itérateurs de style Java).
Le constructeur de QFutureIterator prend un QFuture comme argument. Après la construction, l'itérateur est situé au tout début de la liste des résultats (c'est-à-dire avant le premier résultat). Voici comment parcourir tous les résultats de manière séquentielle :
QFuture<QString> future; //... QFutureIterator<QString> i(future); while (i.hasNext()) QString s = i.next();
La fonction next() renvoie le résultat suivant (en attendant qu'il soit disponible, si nécessaire) du futur et fait avancer l'itérateur. Contrairement aux itérateurs de style STL, les itérateurs de style Java pointent entre les résultats plutôt que directement sur les résultats. Le premier appel à next() fait avancer l'itérateur à la position située entre le premier et le deuxième résultat, et renvoie le premier résultat ; le deuxième appel à next() fait avancer l'itérateur à la position située entre le deuxième et le troisième résultat, et renvoie le deuxième résultat ; et ainsi de suite.

Voici comment itérer sur les éléments dans l'ordre inverse :
QFutureIterator<QString> i(future); i.toBack(); while (i.hasPrevious()) QString s = i.previous();
Si vous souhaitez trouver toutes les occurrences d'une valeur particulière, utilisez findNext() ou findPrevious() dans une boucle.
Plusieurs itérateurs peuvent être utilisés sur le même futur. Si le futur est modifié alors qu'un QFutureIterator est actif, le QFutureIterator continuera à itérer sur le futur original, en ignorant la copie modifiée.
Voir également QFuture::const_iterator et QFuture.
Documentation des fonctions membres
QFutureIterator::QFutureIterator(const QFuture<T> &future)
Construit un itérateur pour parcourir future. L'itérateur est placé au début de la liste des résultats (avant le premier résultat).
Voir aussi operator=().
bool QFutureIterator::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 le résultat correspondant ; sinon, l'itérateur est positionné à la fin de la liste des résultats.
Voir aussi findPrevious().
bool QFutureIterator::findPrevious(const T &value)
Recherche value à partir de la position actuelle de l'itérateur vers l'arrière. Retourne true si value est trouvé ; sinon, retourne false.
Après l'appel, si value a été trouvé, l'itérateur est positionné juste avant le résultat correspondant ; sinon, l'itérateur est positionné au début de la liste des résultats.
Voir aussi findNext().
bool QFutureIterator::hasNext() const
Renvoie true s'il y a au moins un résultat avant l'itérateur, c'est-à-dire si l'itérateur n' est pas à la fin de la liste des résultats ; sinon, renvoie false.
Voir aussi hasPrevious() et next().
bool QFutureIterator::hasPrevious() const
Renvoie true s'il y a au moins un résultat avant l'itérateur, c'est-à-dire si l'itérateur n' est pas en tête de la liste des résultats ; sinon, renvoie false.
Voir aussi hasNext() et previous().
const T &QFutureIterator::next()
Renvoie le résultat suivant et fait avancer l'itérateur d'une position.
L'appel de cette fonction à un itérateur situé en fin de liste de résultats conduit à des résultats indéfinis.
Voir aussi hasNext(), peekNext() et previous().
const T &QFutureIterator::peekNext() const
Renvoie le résultat suivant sans déplacer l'itérateur.
L'appel de cette fonction à un itérateur situé en fin de liste de résultats conduit à des résultats indéfinis.
Voir aussi hasNext(), next() et peekPrevious().
const T &QFutureIterator::peekPrevious() const
Renvoie le résultat précédent sans déplacer l'itérateur.
L'appel de cette fonction à un itérateur situé au début de la liste des résultats conduit à des résultats indéfinis.
Voir aussi hasPrevious(), previous() et peekNext().
const T &QFutureIterator::previous()
Renvoie le résultat précédent et fait reculer l'itérateur d'une position.
L'appel de cette fonction à un itérateur situé au début de la liste des résultats conduit à des résultats indéfinis.
Voir aussi hasPrevious(), peekPrevious() et next().
void QFutureIterator::toBack()
Déplace l'itérateur à la fin de la liste des résultats (après le dernier résultat).
Voir aussi toFront() et previous().
void QFutureIterator::toFront()
Déplace l'itérateur au début de la liste des résultats (avant le premier résultat).
Voir aussi toBack() et next().
QFutureIterator<T> &QFutureIterator::operator=(const QFuture<T> &future)
Permet à l'itérateur d'opérer sur future. L'itérateur est placé en tête de la liste des résultats (avant le premier résultat).
© 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.