QSet Class
template <typename T> class QSetLa clase QSet es una clase de plantilla que proporciona un conjunto basado en tablas hash. Más...
| Cabecera: | #include <QSet> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core)target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
- Lista de todos los miembros, incluyendo los heredados
- QSet es parte de Clases Implícitamente Compartidas.
Esta clase es igual-comparable.
Nota: Todas las funciones de esta clase son reentrantes.
Tipos públicos
| class | const_iterator |
| class | iterator |
| ConstIterator | |
| Iterator | |
| const_pointer | |
| const_reference | |
| difference_type | |
| key_type | |
| pointer | |
| reference | |
| size_type | |
| value_type |
Funciones públicas
| 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(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 |
| 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) |
Relacionados No miembros
(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) |
Descripción detallada
QSet<T> es una de las clases contenedoras genéricas de Qt. Almacena valores en un orden no especificado y proporciona una búsqueda muy rápida de los valores. Internamente, QSet<T> se implementa como QHash.
He aquí un ejemplo de QSet con valores QString:
Para insertar un valor en el conjunto, utilice insert():
set.insert("one"); set.insert("three"); set.insert("seven");
Otra forma de insertar elementos en el conjunto es utilizar operator<<():
set << "twelve" << "fifteen" << "nineteen";
Para comprobar si un elemento pertenece o no al conjunto, utilice contains():
if (!set.contains("ninety-nine")) {/*...*/}
Si quieres navegar por todos los valores almacenados en un QSet, puedes utilizar un iterador. QSet soporta tanto iteradores de estilo Java (QSetIterator y QMutableSetIterator) como iteradores de estilo STL (QSet::iterator y QSet::const_iterator). A continuación se muestra cómo iterar sobre un QSet<QWidget *> utilizando un iterador estilo Java:
QSetIterator<QWidget*> i(set);while (i.hasNext()) { QWidget *w = i.next(); qDebug() << w; }
Aquí está el mismo código, pero usando un iterador estilo STL:
for(auto i = set.cbegin(), end = set.cend(); i != end; ++i) qDebug() << *i;
QSet no está ordenado, por lo que no se puede asumir que la secuencia de un iterador sea predecible. Si se requiere ordenar por clave, utilice un QMap.
Para navegar a través de un QSet, también se puede utilizar un rango basado en for:
Los elementos pueden eliminarse del conjunto utilizando remove(). También existe una función clear() que elimina todos los elementos.
El tipo de datos de valor de QSet debe ser un tipo de datos asignable. No puede, por ejemplo, almacenar un QWidget como valor; en su lugar, almacene un QWidget *. Además, el tipo debe proporcionar operator==(), y también debe existir una función global qHash() que devuelva un valor hash para un argumento del tipo de la clave. Consulte la documentación de QHash para obtener una lista de los tipos soportados por qHash().
Internamente, QSet utiliza una tabla hash para realizar búsquedas. La tabla hash crece y decrece automáticamente para proporcionar búsquedas rápidas sin desperdiciar memoria. Aún puedes controlar el tamaño de la tabla hash llamando a reserve(), si ya sabes aproximadamente cuántos elementos contendrá el QSet, pero esto no es necesario para obtener un buen rendimiento. También puedes llamar a capacity() para recuperar el tamaño de la tabla hash.
Ver también QSetIterator, QMutableSetIterator, QHash, y QMap.
Documentación de tipos de miembros
QSet::ConstIterator
Qt-style sinónimo de QSet::const_iterator.
QSet::Iterator
Qt-style sinónimo de QSet::iterator.
QSet::const_pointer
Typedef para const T *. Proporcionado para la compatibilidad STL.
QSet::const_reference
Typedef para const T &. Proporcionado por compatibilidad con STL.
QSet::difference_type
Typedef para const ptrdiff_t. Se proporciona por compatibilidad con la STL.
QSet::key_type
Typedef para T. Proporcionado por compatibilidad con STL.
QSet::pointer
Typedef para T *. Proporcionado para la compatibilidad STL.
QSet::reference
Typedef para T &. Proporcionado para compatibilidad STL.
QSet::size_type
Typedef para int. Se proporciona por compatibilidad con STL.
QSet::value_type
Typedef para T. Proporcionado para compatibilidad con STL.
Documentación de funciones miembro
[noexcept] QSet::QSet()
Construye un conjunto vacío.
Véase también clear().
QSet::QSet(std::initializer_list<T> list)
Construye un conjunto con una copia de cada uno de los elementos de la lista inicializadora list.
template <typename InputIterator, QtPrivate::IfIsInputIterator<InputIterator> = true> QSet::QSet(InputIterator first, InputIterator last)
Construye un conjunto con el contenido en el rango del iterador [first, last).
El tipo de valor de InputIterator debe ser convertible a T.
Nota: Si el rango [first, last) contiene elementos duplicados, se conserva el primero.
[noexcept] QSet<T>::const_iterator QSet::begin() const
Devuelve un iterador const de estilo STL posicionado en el primer elemento del conjunto.
Véase también constBegin() y end().
QSet<T>::iterator QSet::begin()
Devuelve un iterador no-const de estilo STL posicionado en el primer elemento del conjunto.
Se trata de una función sobrecargada.
qsizetype QSet::capacity() const
Devuelve el número de cubos en la tabla hash interna del conjunto.
El único propósito de esta función es proporcionar un medio para ajustar el uso de memoria de QSet. En general, rara vez necesitará llamar a esta función. Si desea saber cuántos elementos hay en el conjunto, llame a size().
Véase también reserve() y squeeze().
[noexcept] QSet<T>::const_iterator QSet::cbegin() const
Devuelve un iterador const de estilo STL posicionado en el primer elemento del conjunto.
Véase también begin() y cend().
[noexcept] QSet<T>::const_iterator QSet::cend() const
Devuelve un iterador const de estilo STL que apunta al elemento imaginario después del último elemento del conjunto.
Véase también cbegin() y end().
void QSet::clear()
Elimina todos los elementos del conjunto.
Véase también remove().
[noexcept] QSet<T>::const_iterator QSet::constBegin() const
Devuelve un iterador const de estilo STL posicionado en el primer elemento del conjunto.
Véase también begin() y constEnd().
[noexcept] QSet<T>::const_iterator QSet::constEnd() const
Devuelve un iterador const de estilo STL que apunta al elemento imaginario después del último elemento del conjunto.
Véase también constBegin() y end().
QSet<T>::const_iterator QSet::constFind(const T &value) const
Devuelve un iterador constante situado en el elemento value del conjunto. Si el conjunto no contiene ningún elemento value, la función devuelve constEnd().
Véase también find() y contains().
bool QSet::contains(const QSet<T> &other) const
Devuelve true si el conjunto contiene todos los elementos del conjunto other; en caso contrario devuelve false.
Véase también insert(), remove() y find().
bool QSet::contains(const T &value) const
Devuelve true si el conjunto contiene el elemento value; en caso contrario devuelve false.
Véase también insert(), remove() y find().
qsizetype QSet::count() const
Igual que size().
bool QSet::empty() const
Devuelve true si el conjunto está vacío. Esta función se proporciona por compatibilidad con STL. Es equivalente a isEmpty().
[noexcept] QSet<T>::const_iterator QSet::end() const
Devuelve un iterador const de estilo STL posicionado en el elemento imaginario después del último elemento del conjunto.
Véase también constEnd() y begin().
QSet<T>::iterator QSet::end()
Devuelve un iterador no-const de estilo STL que apunta al elemento imaginario después del último elemento del conjunto.
Se trata de una función sobrecargada.
QSet<T>::iterator QSet::erase(QSet<T>::const_iterator pos)
Elimina del conjunto el elemento situado en la posición del iterador pos y devuelve un iterador situado en el siguiente elemento del conjunto.
A diferencia de remove(), esta función nunca hace que QSet rehaga su estructura de datos interna. Esto significa que puede ser llamada con seguridad mientras se itera, y no afectará al orden de los elementos en el conjunto.
Nota: El iterador pos debe ser válido y desreferenciable. Llamar a este método en cualquier otro iterador, incluyendo su propio end(), resulta en un comportamiento indefinido. En particular, incluso el iterador begin() de un conjunto vacío no puede ser dereferenciado.
Véase también remove() y find().
QSet<T>::const_iterator QSet::find(const T &value) const
Devuelve un iterador constante situado en el elemento value del conjunto. Si el conjunto no contiene ningún elemento value, la función devuelve constEnd().
Véase también constFind() y contains().
QSet<T>::iterator QSet::find(const T &value)
Devuelve un iterador no-const posicionado en el elemento value del conjunto. Si el conjunto no contiene ningún elemento value, la función devuelve end().
Se trata de una función sobrecargada.
QSet<T>::iterator QSet::insert(const T &value)
Inserta el elemento value en el conjunto, si value no está ya en el conjunto, y devuelve un iterador que apunta al elemento insertado.
Véase también operator<<(), remove() y contains().
[since 6.1] QSet<T>::iterator QSet::insert(QSet<T>::const_iterator it, const T &value)
Inserta el elemento value en el conjunto, si value no está ya en el conjunto, y devuelve un iterador que apunta al elemento insertado.
El iterador it se ignora.
Esta función se proporciona por compatibilidad con la STL.
Se trata de una función sobrecargada.
Esta función se introdujo en Qt 6.1.
Véase también operator<<(), remove(), y contains().
QSet<T> &QSet::intersect(const QSet<T> &other)
Elimina todos los elementos de este conjunto que no están contenidos en el conjunto other. Se devuelve una referencia a este conjunto.
Véase también intersects(), operator&=(), unite() y subtract().
bool QSet::intersects(const QSet<T> &other) const
Devuelve true si este conjunto tiene al menos un elemento en común con other.
Véase también contains() y intersect().
bool QSet::isEmpty() const
Devuelve true si el conjunto no contiene elementos; en caso contrario devuelve false.
Véase también size().
bool QSet::remove(const T &value)
Elimina cualquier aparición del elemento value del conjunto. Devuelve verdadero si se ha eliminado un elemento; en caso contrario, devuelve false.
Véase también contains() y insert().
[since 6.1] template <typename Pred> qsizetype QSet::removeIf(Pred pred)
Elimina, de este conjunto, todos los elementos para los que el predicado pred devuelve true. Devuelve el número de elementos eliminados, si los hay.
Esta función se introdujo en Qt 6.1.
void QSet::reserve(qsizetype size)
Garantiza que la tabla hash interna del conjunto conste de al menos size buckets.
Esta función es útil para el código que necesita construir un conjunto enorme y quiere evitar la reasignación repetida. Por ejemplo:
Idealmente, size debería ser ligeramente mayor que el número máximo de elementos esperados en el conjunto. size no tiene que ser primo, porque QSet usará un número primo internamente de todos modos. Si size es una subestimación, lo peor que ocurrirá es que QSet será un poco más lento.
En general, rara vez necesitarás llamar a esta función. QSet La tabla hash interna de se contrae o crece automáticamente para proporcionar un buen rendimiento sin desperdiciar demasiada memoria.
Véase también squeeze() y capacity().
qsizetype QSet::size() const
Devuelve el número de elementos del conjunto.
Véase también isEmpty() y count().
void QSet::squeeze()
Reduce el tamaño de la tabla hash interna del conjunto para ahorrar memoria.
El único propósito de esta función es proporcionar un medio para ajustar el uso de memoria de QSet. En general, rara vez necesitará llamar a esta función.
Véase también reserve() y capacity().
QSet<T> &QSet::subtract(const QSet<T> &other)
Elimina todos los elementos de este conjunto que están contenidos en el conjunto other. Devuelve una referencia a este conjunto.
Véase también operator-=(), unite() y intersect().
[noexcept] void QSet::swap(QSet<T> &other)
Cambia este conjunto por other. Esta operación es muy rápida y nunca falla.
Cada elemento del conjunto other que no esté ya en este conjunto se inserta en este conjunto. Se devuelve una referencia a este conjunto.
Véase también operator|=(), intersect() y subtract().
QList<T> QSet::values() const
Devuelve un nuevo QList que contiene los elementos del conjunto. El orden de los elementos en QList no está definido.
Nota: Desde Qt 5.14, los constructores de rango están disponibles para las clases contenedoras genéricas de Qt y deberían usarse en lugar de este método.
Esta función crea una nueva lista, en tiempo lineal. El uso de tiempo y memoria que conlleva puede evitarse iterando desde constBegin() hasta constEnd().
QSet<T> &QSet::operator&=(const QSet<T> &other)
Igual que intersect(other).
Véase también operator&(), operator|=() y operator-=().
QSet<T> &QSet::operator&=(const T &value)
Igual que intersect(other)si consideramos que other es un conjunto que contiene el singleton value.
Se trata de una función sobrecargada.
QSet<T> &QSet::operator-=(const QSet<T> &other)
Igual que subtract(other).
Véase también operator-(), operator|=() y operator&=().
QSet<T> &QSet::operator-=(const T &value)
Elimina la aparición del elemento value del conjunto, si se encuentra, y devuelve una referencia al conjunto. Si value no está contenido en el conjunto, no se elimina nada.
Véase también remove().
QSet<T> &QSet::operator<<(const T &value)
QSet<T> &QSet::operator+=(const T &value)
QSet<T> &QSet::operator|=(const T &value)
Inserta un nuevo elemento value y devuelve una referencia al conjunto. Si value ya existe en el conjunto, éste se deja sin cambios.
Véase también insert().
QSet<T> &QSet::operator|=(const QSet<T> &other)
QSet<T> &QSet::operator|=(QSet<T> &&other)
QSet<T> &QSet::operator+=(const QSet<T> &other)
QSet<T> &QSet::operator+=(QSet<T> &&other)
Igual que unite(other).
Véase también operator|(), operator&=() y operator-=().
Relacionados No miembros
[since 6.1] template <typename T, typename Predicate> qsizetype erase_if(QSet<T> &set, Predicate pred)
Elimina todos los elementos para los que el predicado pred devuelve verdadero del conjunto set. Devuelve el número de elementos eliminados, si los hay.
Esta función se introdujo en Qt 6.1.
[noexcept] bool operator!=(const QSet<T> &lhs, const QSet<T> &rhs)
Devuelve true si el conjunto lhs no es igual al conjunto rhs; en caso contrario devuelve false.
Dos conjuntos se consideran iguales si contienen los mismos elementos.
Esta función requiere que el tipo de valor implemente operator==().
Véase también operator==().
QSet<T> operator&(const QSet<T> &lhs, const QSet<T> &rhs)
QSet<T> operator&(QSet<T> &&lhs, const QSet<T> &rhs)
Devuelve un nuevo QSet que es la intersección de los conjuntos lhs y rhs.
Véase también intersect(), operator&=(), operator|() y operator-().
QSet<T> operator-(const QSet<T> &lhs, const QSet<T> &rhs)
QSet<T> operator-(QSet<T> &&lhs, const QSet<T> &rhs)
Devuelve un nuevo QSet que es el conjunto diferencia de los conjuntos lhs y rhs.
Véase también subtract(), operator-=(), operator|() y operator&().
template <typename T> QDataStream &operator<<(QDataStream &out, const QSet<T> &set)
Escribe el set en el flujo out.
Esta función requiere que el tipo de valor implemente operator<<().
Véase también Formato de los operadores QDataStream.
[noexcept] bool operator==(const QSet<T> &lhs, const QSet<T> &rhs)
Devuelve true si el conjunto lhs es igual al conjunto rhs; en caso contrario devuelve false.
Dos conjuntos se consideran iguales si contienen los mismos elementos.
Esta función requiere que el tipo de valor implemente operator==().
Véase también operator!=().
template <typename T> QDataStream &operator>>(QDataStream &in, QSet<T> &set)
Lee un conjunto del flujo in en set.
Esta función requiere que el tipo de valor implemente operator>>().
Véase también Formato de los operadores QDataStream.
QSet<T> operator|(const QSet<T> &lhs, const QSet<T> &rhs)
QSet<T> operator|(const QSet<T> &lhs, QSet<T> &&rhs)
QSet<T> operator|(QSet<T> &&lhs, const QSet<T> &rhs)
QSet<T> operator|(QSet<T> &&lhs, QSet<T> &&rhs)
QSet<T> operator+(const QSet<T> &lhs, const QSet<T> &rhs)
QSet<T> operator+(const QSet<T> &lhs, QSet<T> &&rhs)
QSet<T> operator+(QSet<T> &&lhs, const QSet<T> &rhs)
QSet<T> operator+(QSet<T> &&lhs, QSet<T> &&rhs)
Devuelve un nuevo QSet que es la unión de los conjuntos lhs y rhs.
Véase también unite(), operator|=(), operator&() y 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.