QSet Class
template <typename T> class QSetLa classe QSet est une classe modèle qui fournit un ensemble basé sur une table de hachage. En savoir plus...
| En-tête : | #include <QSet> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake : | QT += core |
- Liste de tous les membres, y compris les membres hérités
- QSet fait partie des classes à partage implicite et des classes de conteneurs.
Remarque : toutes les fonctions de cette classe sont réentrantes.
Comparaisons QSet
| Catégorie | Types comparables |
|---|---|
| égalité | QSet |
Types publics
| class | const_iterator |
| class | iterator |
| ConstIterator | |
| Iterator | |
| const_pointer | |
| const_reference | |
| difference_type | |
| key_type | |
| pointer | |
| reference | |
| size_type | |
| value_type |
Fonctions publiques
| QSet() | |
| QSet(std::initializer_list<T> list) | |
| QSet(InputIterator first, InputIterator last) | |
| QSet<T>::const_iterator | begin() const |
| QSet<T>::iterator | begin() |
| qsizetype | capacity() const |
| QSet<T>::const_iterator | cbegin() const |
| QSet<T>::const_iterator | cend() const |
| void | clear() |
| QSet<T>::const_iterator | constBegin() const |
| QSet<T>::const_iterator | constEnd() const |
| QSet<T>::const_iterator | constFind(const T &value) const |
| bool | contains(const QSet<T> &other) const |
| bool | contains(const T &value) const |
| qsizetype | count() const |
| bool | empty() const |
| QSet<T>::const_iterator | end() const |
| QSet<T>::iterator | end() |
| QSet<T>::iterator | erase(QSet<T>::const_iterator pos) |
| QSet<T>::const_iterator | find(const T &value) const |
| QSet<T>::iterator | find(const T &value) |
| QSet<T>::iterator | insert(const T &value) |
(since 6.1) QSet<T>::iterator | insert(T &&value) |
(since 6.12) QSet<T>::iterator | insert(QSet<T>::const_iterator it, T &&value) |
(since 6.1) QSet<T>::iterator | insert(QSet<T>::const_iterator it, const T &value) |
| QSet<T> & | intersect(const QSet<T> &other) |
| bool | intersects(const QSet<T> &other) const |
| bool | isEmpty() const |
| bool | remove(const T &value) |
(since 6.1) qsizetype | removeIf(Pred pred) |
| void | reserve(qsizetype size) |
| qsizetype | size() const |
| void | squeeze() |
| QSet<T> & | subtract(const QSet<T> &other) |
| void | swap(QSet<T> &other) |
| QSet<T> & | unite(QSet<T> &&other) |
| QSet<T> & | unite(const QSet<T> &other) |
| QList<T> | values() const & |
(since 6.12) QList<T> | values() && |
| QSet<T> & | operator&=(const QSet<T> &other) |
| QSet<T> & | operator&=(const T &value) |
| QSet<T> & | operator+=(QSet<T> &&other) |
| QSet<T> & | operator+=(const QSet<T> &other) |
| QSet<T> & | operator+=(const T &value) |
| QSet<T> & | operator-=(const QSet<T> &other) |
| QSet<T> & | operator-=(const T &value) |
| QSet<T> & | operator<<(const T &value) |
| QSet<T> & | operator|=(QSet<T> &&other) |
| QSet<T> & | operator|=(const QSet<T> &other) |
| QSet<T> & | operator|=(const T &value) |
Personnes non membres concernées
(since 6.1) qsizetype | erase_if(QSet<T> &set, Predicate pred) |
| bool | operator!=(const QSet<T> &lhs, const QSet<T> &rhs) |
| QSet<T> | operator&(QSet<T> &&lhs, const QSet<T> &rhs) |
| QSet<T> | operator&(const QSet<T> &lhs, const QSet<T> &rhs) |
| QSet<T> | operator+(QSet<T> &&lhs, QSet<T> &&rhs) |
| QSet<T> | operator+(QSet<T> &&lhs, const QSet<T> &rhs) |
| QSet<T> | operator+(const QSet<T> &lhs, QSet<T> &&rhs) |
| QSet<T> | operator+(const QSet<T> &lhs, const QSet<T> &rhs) |
| QSet<T> | operator-(QSet<T> &&lhs, const QSet<T> &rhs) |
| QSet<T> | operator-(const QSet<T> &lhs, const QSet<T> &rhs) |
| QDataStream & | operator<<(QDataStream &out, const QSet<T> &set) |
| bool | operator==(const QSet<T> &lhs, const QSet<T> &rhs) |
| QDataStream & | operator>>(QDataStream &in, QSet<T> &set) |
| QSet<T> | operator|(QSet<T> &&lhs, QSet<T> &&rhs) |
| QSet<T> | operator|(QSet<T> &&lhs, const QSet<T> &rhs) |
| QSet<T> | operator|(const QSet<T> &lhs, QSet<T> &&rhs) |
| QSet<T> | operator|(const QSet<T> &lhs, const QSet<T> &rhs) |
Description détaillée
QSet<T> est l’une des classes de conteneurs génériques de Qt, où T spécifie le type des valeurs stockées dans l’ensemble. Il stocke les valeurs dans un ordre non spécifié et permet une recherche très rapide de ces valeurs. En interne, QSet<T> est implémenté sous la forme d’une QHash.
Voici un exemple de QSet contenant des valeurs de type ` QString ` :
Pour insérer une valeur dans le ensemble, utilisez ` insert()` :
set.insert("one");
set.insert("three");
set.insert("seven");Une autre façon d’insérer des éléments dans l’ensemble consiste à utiliser la fonction ` operator<<()` :
set << "twelve" << "fifteen" << "nineteen";Pour vérifier si un élément appartient ou non à l'ensemble, utilisez la fonction ` contains()` :
if (!set.contains("ninety-nine"))
{/*...*/}Si vous souhaitez parcourir toutes les valeurs stockées dans un QSet, vous pouvez utiliser un itérateur. QSet prend en charge à la fois les itérateurs de style Java (QSetIterator et QMutableSetIterator) et les itérateurs de style STL (QSet::iterator et QSet::const_iterator). Voici comment parcourir un QSet<QWidget *> à l'aide d'un itérateur de style Java :
QSetIterator<QWidget*> i(set);
while (i.hasNext()) {
QWidget*w = i.next();
qDebug() << w;
}Voici le même code, mais utilisant un itérateur de type STL :
for (auto i = set.cbegin(), end = set.cend(); i != end;++i)
qDebug() << *i;Un `QSet` n'est pas ordonné ; on ne peut donc pas supposer que la séquence d'un itérateur soit prévisible. Si un tri par clé est nécessaire, utilisez un ` QMap`.
Pour parcourir un QSet, vous pouvez également utiliser une boucle « for » basée sur une plage :
Les éléments peuvent être supprimés de l’ensemble à l’aide de la fonction ` remove()`. Il existe également une fonction ` clear()` qui supprime tous les éléments.
Le type de données de la valeur d’un QSet doit être un type de données assignable. Vous ne pouvez pas, par exemple, stocker un QWidget en tant que valeur ; vous devez plutôt stocker un QWidget *. De plus, le type doit fournir la méthode operator==(), et il doit également exister une fonction globale qHash() qui renvoie une valeur de hachage pour un argument du type de la clé. Consultez la documentation de QHash pour obtenir la liste des types pris en charge par qHash().
En interne, QSet utilise une table de hachage pour effectuer les recherches. La table de hachage s'agrandit et se réduit automatiquement pour permettre des recherches rapides sans gaspiller de mémoire. Vous pouvez tout de même contrôler la taille de la table de hachage en appelant reserve(), si vous connaissez déjà approximativement le nombre d’éléments que le QSet contiendra, mais cela n’est pas nécessaire pour obtenir de bonnes performances. Vous pouvez également appeler capacity() pour récupérer la taille de la table de hachage.
Voir également QSetIterator, QMutableSetIterator, QHash et QMap.
Documentation sur les types de membres
QSet::ConstIterator
Synonyme « à la Qt » de « QSet::const_iterator ».
QSet::Iterator
Synonyme, dans le style Qt, de « QSet::iterator ».
QSet::const_pointer
Définition de type pour `const T *`. Fournie à des fins de compatibilité avec la STL.
QSet::const_reference
Définition de type pour `const T &`. Fournie à des fins de compatibilité avec la STL.
QSet::difference_type
Définition de type pour `const ptrdiff_t`. Fournie à des fins de compatibilité avec la STL.
QSet::key_type
Définition de type pour T. Fournie à des fins de compatibilité avec la STL.
QSet::pointer
Définition de type pour T*. Fournie à des fins de compatibilité avec la STL.
QSet::reference
Définition de type pour T &. Fournie à des fins de compatibilité avec la STL.
QSet::size_type
Définition de type pour le type `int`. Fournie à des fins de compatibilité avec la STL.
QSet::value_type
Définition de type pour T. Fournie à des fins de compatibilité avec la STL.
Documentation des fonctions membres
[noexcept] QSet::QSet()
Crée un ensemble vide.
Voir aussi clear().
QSet::QSet(std::initializer_list<T> list)
Crée un ensemble contenant une copie de chacun des éléments de la liste d'initialisation list.
template <typename InputIterator, QtPrivate::IfIsInputIterator<InputIterator> = true> QSet::QSet(InputIterator first, InputIterator last)
Crée un ensemble dont le contenu correspond à la plage de l'itérateur [first, last).
Le type de valeur de ` InputIterator ` doit être convertible en ` T`.
Remarque : si la plage [first, last) contient des éléments en double, seul le premier est conservé.
[noexcept] QSet<T>::const_iterator QSet::begin() const
Renvoie un itérateur de type STL (const) positionné sur le premier élément de l'ensemble.
Voir également constBegin() et end().
QSet<T>::iterator QSet::begin()
Renvoie un itérateur de type STL non constant positionné sur le premier élément de l'ensemble.
Il s'agit d'une fonction surchargée.
qsizetype QSet::capacity() const
Renvoie le nombre de compartiments dans la table de hachage interne de l'ensemble.
Cette fonction a pour seul but de permettre d'ajuster avec précision l'utilisation de la mémoire par QSet. En général, vous n'aurez que très rarement besoin d'appeler cette fonction. Si vous souhaitez connaître le nombre d'éléments contenus dans le set, appelez size().
Voir également reserve() et squeeze().
[noexcept] QSet<T>::const_iterator QSet::cbegin() const
Renvoie un itérateur de type STL de type const positionné sur le premier élément de l'ensemble.
Voir également begin() et cend().
[noexcept] QSet<T>::const_iterator QSet::cend() const
Renvoie un itérateur de type STL (const) pointant vers l'élément imaginaire situé après le dernier élément de l'ensemble.
Voir également cbegin() et end().
void QSet::clear()
Supprime tous les éléments de l'ensemble.
Voir aussi remove().
[noexcept] QSet<T>::const_iterator QSet::constBegin() const
Renvoie un itérateur de type STL (const) positionné sur le premier élément de l'ensemble.
Voir également begin() et constEnd().
[noexcept] QSet<T>::const_iterator QSet::constEnd() const
Renvoie un itérateur de type STL (const) pointant vers l'élément imaginaire situé après le dernier élément de l'ensemble.
Voir également constBegin() et end().
QSet<T>::const_iterator QSet::constFind(const T &value) const
Renvoie un itérateur const positionné sur l'élément value dans l'ensemble. Si l'ensemble ne contient aucun élément value, la fonction renvoie constEnd().
Voir également find() et contains().
bool QSet::contains(const QSet<T> &other) const
Renvoie « true » si l'ensemble contient tous les éléments de l'ensemble « other » ; sinon, renvoie « false ».
Voir également insert(), remove() et find().
bool QSet::contains(const T &value) const
Renvoie « true » si l'ensemble contient l'élément « value » ; sinon, renvoie « false ».
Voir également insert(), remove() et find().
qsizetype QSet::count() const
Identique à ` size()`.
bool QSet::empty() const
Renvoie ` true ` si l'ensemble est vide. Cette fonction est fournie à des fins de compatibilité avec la STL. Elle équivaut à ` isEmpty()`.
[noexcept] QSet<T>::const_iterator QSet::end() const
Renvoie un itérateur const de type STL positionné sur l'élément imaginaire situé après le dernier élément de l'ensemble.
Voir également constEnd() et begin().
QSet<T>::iterator QSet::end()
Renvoie un itérateur de type STL non constant pointant vers l'élément imaginaire situé après le dernier élément de l'ensemble.
Il s'agit d'une fonction surchargée.
QSet<T>::iterator QSet::erase(QSet<T>::const_iterator pos)
Supprime de l'ensemble l'élément situé à la position de l'itérateur pos, puis renvoie un itérateur positionné sur l'élément suivant de l'ensemble.
Contrairement à la méthode remove(), cette fonction ne provoque jamais la réorganisation de la structure de données interne d’ QSet. Cela signifie qu’elle peut être appelée en toute sécurité pendant une itération et qu’elle n’affectera pas l’ordre des éléments dans l’ensemble.
Remarque : l’itérateur pos doit être valide et déréférençable. L’appel de cette méthode sur tout autre itérateur, y compris sa propre méthode end(), entraîne un comportement indéfini. En particulier, même l’itérateur begin() d’un ensemble vide ne peut pas être déréférencé.
Voir également remove() et find().
QSet<T>::const_iterator QSet::find(const T &value) const
Renvoie un itérateur constant positionné sur l'élément value dans l'ensemble. Si l'ensemble ne contient aucun élément value, la fonction renvoie constEnd().
Voir également constFind() et contains().
QSet<T>::iterator QSet::find(const T &value)
Renvoie un itérateur non constant positionné sur l’élément value du ensemble. Si l’ensemble ne contient aucun élément value, la fonction renvoie end().
Il s'agit d'une fonction surchargée.
QSet<T>::iterator QSet::insert(const T &value)
Ajoute l'élément value à l'ensemble, si value n'y figure pas déjà, et renvoie un itérateur pointant vers l'élément inséré.
Voir également operator<<(), remove() et contains().
[since 6.1] QSet<T>::iterator QSet::insert(T &&value)
Il s'agit d'une fonction surchargée.
Cette fonction a été introduite dans Qt 6.1.
[since 6.12] QSet<T>::iterator QSet::insert(QSet<T>::const_iterator it, T &&value)
Il s'agit d'une fonction surchargée.
Cette fonction a été introduite dans Qt 6.12.
[since 6.1] QSet<T>::iterator QSet::insert(QSet<T>::const_iterator it, const T &value)
Ajoute l'élément value à l'ensemble, si value n'y figure pas déjà, et renvoie un itérateur pointant vers l'élément inséré.
L'itérateur it est ignoré.
Cette fonction est fournie à des fins de compatibilité avec la STL.
Il s'agit d'une fonction surchargée.
Cette fonction a été introduite dans Qt 6.1.
Voir également operator<<(), remove() et contains().
QSet<T> &QSet::intersect(const QSet<T> &other)
Supprime de cet ensemble tous les éléments qui ne figurent pas dans l'ensemble other. Une référence à cet ensemble est renvoyée.
Voir également intersects(), operator&=(), unite() et subtract().
bool QSet::intersects(const QSet<T> &other) const
Renvoie true si cet ensemble a au moins un élément en commun avec other.
Voir également contains() et intersect().
bool QSet::isEmpty() const
Renvoie « true » si l'ensemble ne contient aucun élément ; sinon, renvoie « false ».
Voir aussi size().
bool QSet::remove(const T &value)
Supprime toutes les occurrences de l'élément value de l'ensemble. Renvoie « true » si un élément a bien été supprimé ; sinon, renvoie « false ».
Voir également ` contains()` et ` insert()`.
[since 6.1] template <typename Pred> qsizetype QSet::removeIf(Pred pred)
Supprime de cet ensemble tous les éléments pour lesquels le prédicat pred renvoie « true ». Renvoie le nombre d'éléments supprimés, le cas échéant.
Cette fonction a été introduite dans Qt 6.1.
void QSet::reserve(qsizetype size)
Garantit que la table de hachage interne de l'ensemble comporte au moins size compartiments.
Cette fonction est utile pour le code qui doit construire un ensemble volumineux et qui souhaite éviter les réallocations répétées. Par exemple :
Idéalement, size devrait être légèrement supérieur au nombre maximal d’éléments attendus dans l’ensemble. size n’a pas besoin d’être un nombre premier, car QSet utilisera de toute façon un nombre premier en interne. Si size est sous-estimé, le pire qui puisse arriver est que l’opération QSet soit un peu plus lente.
En général, vous n’aurez que très rarement besoin d’appeler cette fonction. La table de hachage interne de QSet s’ajuste automatiquement (réduction ou extension) pour offrir de bonnes performances sans gaspiller trop de mémoire.
Voir également squeeze() et capacity().
qsizetype QSet::size() const
Renvoie le nombre d'éléments contenus dans l'ensemble.
Voir également isEmpty() et count().
void QSet::squeeze()
Réduit la taille de la table de hachage interne du set afin d'économiser de la mémoire.
Cette fonction a pour seul objectif de permettre d'ajuster avec précision l'utilisation de la mémoire par QSet. En général, vous n'aurez que très rarement besoin d'appeler cette fonction.
Voir également reserve() et capacity().
QSet<T> &QSet::subtract(const QSet<T> &other)
Supprime de cet ensemble tous les éléments qui figurent dans l'ensemble « other ». Renvoie une référence à cet ensemble.
Voir également operator-=(), unite() et intersect().
[noexcept] void QSet::swap(QSet<T> &other)
Permet d'échanger cet ensemble contre other. Cette opération est très rapide et ne rencontre jamais d'échec.
Chaque élément de l'ensemble « other » qui ne figure pas encore dans cet ensemble est ajouté à celui-ci. Une référence à cet ensemble est renvoyée.
Voir également operator|=(), intersect() et subtract().
QList<T> QSet::values() const &
Renvoie un nouvel objet ` QList ` contenant les éléments de l'ensemble. L'ordre des éléments dans l'QList e n'est pas défini.
Remarque : depuis Qt 5.14, des constructeurs de plage sont disponibles pour les classes de conteneurs génériques de Qt et doivent être utilisés à la place de cette méthode.
Cette fonction crée une nouvelle liste en temps linéaire. Le temps et la mémoire ainsi consommés peuvent être évités en itérant de ` constBegin()` à ` constEnd()`.
[since 6.12] QList<T> QSet::values() &&
Il s'agit d'une fonction surchargée.
Cette fonction a été introduite dans Qt 6.12.
QSet<T> &QSet::operator&=(const QSet<T> &other)
Equivalent à intersect(other).
Voir également operator&(), operator|=() et operator-=().
QSet<T> &QSet::operator&=(const T &value)
C'est la même chose que intersect(other), si l'on considère que « other » est un ensemble contenant l'élément unique value.
Il s'agit d'une fonction surchargée.
QSet<T> &QSet::operator+=(QSet<T> &&other)
QSet<T> &QSet::operator|=(QSet<T> &&other)
QSet<T> &QSet::operator+=(const QSet<T> &other)
QSet<T> &QSet::operator|=(const QSet<T> &other)
Equivalent à unite(other).
Voir également operator|(), operator&=() et operator-=().
QSet<T> &QSet::operator-=(const QSet<T> &other)
Equivalent à subtract(other).
Voir également operator-(), operator|=() et operator&=().
QSet<T> &QSet::operator-=(const T &value)
Supprime l'élément value de l'ensemble, s'il y figure, et renvoie une référence à l'ensemble. Si l'value e pas dans l'ensemble, rien n'est supprimé.
Voir aussi ` remove()`.
QSet<T> &QSet::operator<<(const T &value)
QSet<T> &QSet::operator+=(const T &value)
QSet<T> &QSet::operator|=(const T &value)
Insère un nouvel élément value et renvoie une référence à l’ensemble. Si value existe déjà dans l’ensemble, celui-ci reste inchangé.
Voir aussi insert().
Éléments non membres associés
[since 6.1] template <typename T, typename Predicate> qsizetype erase_if(QSet<T> &set, Predicate pred)
Supprime tous les éléments pour lesquels le prédicat pred renvoie « vrai » de l'ensemble set. Renvoie le nombre d'éléments supprimés, le cas échéant.
Cette fonction a été introduite dans Qt 6.1.
[noexcept] bool operator!=(const QSet<T> &lhs, const QSet<T> &rhs)
Renvoie « true » si l'ensemble lhs n'est pas égal à l'ensemble rhs; sinon, renvoie « false ».
Deux ensembles sont considérés comme égaux s'ils contiennent les mêmes éléments.
Cette fonction nécessite que le type de valeur implémente operator==().
Voir également operator==().
QSet<T> operator&(QSet<T> &&lhs, const QSet<T> &rhs)
QSet<T> operator&(const QSet<T> &lhs, const QSet<T> &rhs)
Renvoie un nouvel objet ` QSet ` correspondant à l'intersection des ensembles ` lhs ` et ` rhs`.
Voir également intersect(), operator&=(), operator|() et operator-().
QSet<T> operator+(QSet<T> &&lhs, QSet<T> &&rhs)
QSet<T> operator|(QSet<T> &&lhs, QSet<T> &&rhs)
QSet<T> operator+(QSet<T> &&lhs, const QSet<T> &rhs)
QSet<T> operator|(QSet<T> &&lhs, const QSet<T> &rhs)
QSet<T> operator+(const QSet<T> &lhs, QSet<T> &&rhs)
QSet<T> operator|(const QSet<T> &lhs, QSet<T> &&rhs)
QSet<T> operator+(const QSet<T> &lhs, const QSet<T> &rhs)
QSet<T> operator|(const QSet<T> &lhs, const QSet<T> &rhs)
Renvoie un nouvel objet ` QSet ` qui correspond à l'union des ensembles lhs et rhs.
Voir également unite(), operator|=(), operator&() et operator-().
QSet<T> operator-(QSet<T> &&lhs, const QSet<T> &rhs)
QSet<T> operator-(const QSet<T> &lhs, const QSet<T> &rhs)
Renvoie un nouvel objet ` QSet ` correspondant à la différence entre les ensembles ` lhs ` et ` rhs`.
Voir également subtract(), operator-=(), operator|() et operator&().
template <typename T> QDataStream &operator<<(QDataStream &out, const QSet<T> &set)
Écrit l'set dans le flux out.
Cette fonction nécessite que le type de valeur implémente l'interface operator<<().
Voir également Format des opérateurs QDataStream.
[noexcept] bool operator==(const QSet<T> &lhs, const QSet<T> &rhs)
Renvoie « true » si l’ensemble lhs est égal à l’ensemble rhs; sinon, renvoie « false ».
Deux ensembles sont considérés comme égaux s’ils contiennent les mêmes éléments.
Cette fonction nécessite que le type de valeur implémente l'interface operator==().
Voir également operator!=().
template <typename T> QDataStream &operator>>(QDataStream &in, QSet<T> &set)
Lit un ensemble à partir du flux in et l'enregistre dans set.
Cette fonction nécessite que le type de valeur implémente l'interface operator>>().
Voir également Format des opérateurs QDataStream.
© 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.