En esta página

QMultiHash Class

template <typename Key, typename T> class QMultiHash

La clase QMultiHash proporciona una tabla hash multivaluada. Más...

Cabecera: #include <QMultiHash>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

Esta clase es igual-comparable.

Nota: Todas las funciones de esta clase son reentrantes.

Tipos Públicos

Funciones Públicas

QMultiHash()
QMultiHash(const QHash<Key, T> &other)
QMultiHash(std::initializer_list<std::pair<Key, T>> list)
QMultiHash(InputIterator begin, InputIterator end)
(since 6.4) auto asKeyValueRange() &&
(since 6.4) auto asKeyValueRange() &
(since 6.4) auto asKeyValueRange() const &&
(since 6.4) auto asKeyValueRange() const &
QMultiHash<Key, T>::iterator begin()
QMultiHash<Key, T>::const_iterator begin() const
QMultiHash<Key, T>::const_iterator cbegin() const
QMultiHash<Key, T>::const_iterator cend() const
void clear()
QMultiHash<Key, T>::const_iterator constBegin() const
QMultiHash<Key, T>::const_iterator constEnd() const
QMultiHash<Key, T>::const_iterator constFind(const Key &key, const T &value) const
QMultiHash<Key, T>::const_key_value_iterator constKeyValueBegin() const
QMultiHash<Key, T>::const_key_value_iterator constKeyValueEnd() const
bool contains(const Key &key, const T &value) const
qsizetype count(const Key &key, const T &value) const
QMultiHash<Key, T>::iterator emplace(Key &&key, Args &&... args)
QMultiHash<Key, T>::iterator emplace(const Key &key, Args &&... args)
QMultiHash<Key, T>::iterator emplaceReplace(Key &&key, Args &&... args)
QMultiHash<Key, T>::iterator emplaceReplace(const Key &key, Args &&... args)
QMultiHash<Key, T>::iterator end()
QMultiHash<Key, T>::const_iterator end() const
std::pair<QMultiHash<Key, T>::iterator, QMultiHash<Key, T>::iterator> equal_range(const Key &key)
std::pair<QMultiHash<Key, T>::const_iterator, QMultiHash<Key, T>::const_iterator> equal_range(const Key &key) const
QMultiHash<Key, T>::iterator erase(QMultiHash<Key, T>::const_iterator pos)
QMultiHash<Key, T>::iterator find(const Key &key, const T &value)
QMultiHash<Key, T>::const_iterator find(const Key &key, const T &value) const
QMultiHash<Key, T>::iterator insert(const Key &key, const T &value)
(since 6.11) QMultiHash<Key, T>::iterator insert(Key &&key, T &&value)
(since 6.11) QMultiHash<Key, T>::iterator insert(Key &&key, const T &value)
(since 6.11) QMultiHash<Key, T>::iterator insert(const Key &key, T &&value)
Key key(const T &value) const
Key key(const T &value, const Key &defaultKey) const
QMultiHash<Key, T>::key_iterator keyBegin() const
QMultiHash<Key, T>::key_iterator keyEnd() const
QMultiHash<Key, T>::key_value_iterator keyValueBegin()
QMultiHash<Key, T>::const_key_value_iterator keyValueBegin() const
QMultiHash<Key, T>::key_value_iterator keyValueEnd()
QMultiHash<Key, T>::const_key_value_iterator keyValueEnd() const
QList<Key> keys() const
qsizetype remove(const Key &key)
qsizetype remove(const Key &key, const T &value)
(since 6.1) qsizetype removeIf(Predicate pred)
QMultiHash<Key, T>::iterator replace(const Key &key, const T &value)
void swap(QMultiHash<Key, T> &other)
T take(const Key &key)
QList<Key> uniqueKeys() const
(since 6.0) QMultiHash<Key, T> &unite(const QHash<Key, T> &other)
QMultiHash<Key, T> &unite(const QMultiHash<Key, T> &other)
T value(const Key &key) const
T value(const Key &key, const T &defaultValue) const
QList<T> values() const
QList<T> values(const Key &key) const
QMultiHash<Key, T> operator+(const QMultiHash<Key, T> &other) const
QMultiHash<Key, T> &operator+=(const QMultiHash<Key, T> &other)
T &operator[](const Key &key)
(since 6.1) qsizetype erase_if(QMultiHash<Key, T> &hash, Predicate pred)
size_t qHash(const QMultiHash<Key, T> &key, size_t seed = 0)
bool operator!=(const QMultiHash<Key, T> &lhs, const QMultiHash<Key, T> &rhs)
QDataStream &operator<<(QDataStream &out, const QMultiHash<Key, T> &hash)
bool operator==(const QMultiHash<Key, T> &lhs, const QMultiHash<Key, T> &rhs)
QDataStream &operator>>(QDataStream &in, QMultiHash<Key, T> &hash)

Descripción Detallada

QMultiHash<Key, T> es una de las clases contenedoras genéricas de Qt. Proporciona una tabla hash que permite múltiples valores para la misma clave.

QMultiHash refleja la API de QHash. Por ejemplo, se puede utilizar isEmpty() para comprobar si el hash está vacío, y se puede recorrer un QMultiHash utilizando las clases iteradoras de QHash(por ejemplo, QHashIterator). Pero a diferencia de QHash, proporciona una función insert() que permite la inserción de múltiples elementos con la misma clave. La función replace() corresponde a QHash::insert(). También proporciona los prácticos operador+() y operador+=().

A diferencia de QMultiMap, QMultiHash no permite ordenar los elementos insertados. La única garantía es que los elementos que comparten la misma clave aparecerán consecutivamente, desde el valor insertado más recientemente hasta el menos reciente.

Ejemplo:

QMultiHash<QString, int> hash1, hash2, hash3;

hash1.insert("plenty", 100);
hash1.insert("plenty", 2000);
// hash1.size() == 2

hash2.insert("plenty", 5000);
// hash2.size() == 1

hash3 = hash1 + hash2;
// hash3.size() == 3

A diferencia de QHash, QMultiHash no proporciona el operador[]. Utilice value() o replace() si desea acceder al elemento insertado más recientemente con una clave determinada.

Si desea recuperar todos los valores de una sola clave, puede utilizar values(const Key &key), que devuelve un QList<T>:

QList<int> values = hash.values("plenty");
for (auto i : std::as_const(values))
    cout << i << endl;

Los elementos que comparten la misma clave están disponibles de más recientemente a menos recientemente insertados.

Un enfoque más eficiente es llamar a find() para obtener el iterador de estilo STL para el primer elemento con una clave e iterar a partir de ahí:

auto i = hash.constFind("plenty");
while (i != hash.cend() && i.key() == "plenty") {
    cout << i.value() << endl;
    ++i;
}

Los tipos de datos clave y valor de QMultiHash deben ser tipos de datos asignables. No puedes, por ejemplo, almacenar un QWidget como valor; en su lugar, almacena un QWidget *. Además, el tipo de clave de QMultiHash debe proporcionar operator==(), y también debe haber una función qHash() en el espacio de nombres del tipo que devuelva un valor hash para un argumento del tipo de la clave. Consulte la documentación de QHash para obtener más detalles.

Véase también QHash, QHashIterator, QMutableHashIterator, y QMultiMap.

Documentación de tipos de miembros

QMultiHash::const_key_value_iterator

El typedef QMultiHash::const_key_value_iterator proporciona un iterador const de estilo STL para QMultiHash.

QMultiHash::const_key_value_iterator es esencialmente lo mismo que QMultiHash::const_iterator con la diferencia de que operator*() devuelve un par clave/valor en lugar de un valor.

Véase también QKeyValueIterator.

QMultiHash::key_value_iterator

El tippedef QMultiHash::key_value_iterator proporciona un iterador estilo STL para QMultiHash.

QMultiHash::key_value_iterator es esencialmente lo mismo que QMultiHash::iterator con la diferencia de que operator*() devuelve un par clave/valor en lugar de un valor.

Véase también QKeyValueIterator.

Documentación de funciones miembro

[noexcept] QMultiHash::QMultiHash()

Construye un hash vacío.

[explicit] QMultiHash::QMultiHash(const QHash<Key, T> &other)

Construye una copia de other (que puede ser un QHash o un QMultiHash).

QMultiHash::QMultiHash(std::initializer_list<std::pair<Key, T>> list)

Construye un multi-hash con una copia de cada uno de los elementos de la lista inicializadora list.

template <typename InputIterator> QMultiHash::QMultiHash(InputIterator begin, InputIterator end)

Construye un multi-hash con una copia de cada uno de los elementos en el rango del iterador [begin, end). O bien los elementos iterados por el rango deben ser objetos con miembros de datos first y second (como std::pair), convertibles a Key y a T respectivamente; o bien los iteradores deben tener funciones miembro key() y value(), devolviendo una clave convertible a Key y un valor convertible a T respectivamente.

[since 6.4] auto QMultiHash::asKeyValueRange() &

[since 6.4] auto QMultiHash::asKeyValueRange() const &

[since 6.4] auto QMultiHash::asKeyValueRange() &&

[since 6.4] auto QMultiHash::asKeyValueRange() const &&

Devuelve un objeto de rango que permite iterar sobre este hash como pares clave/valor. Por ejemplo, este objeto de rango se puede utilizar en un bucle for basado en rangos, en combinación con una declaración de enlace estructurada:

QMultiHash<QString, int> hash;
hash.insert("January", 1);
hash.insert("February", 2);
// ...
hash.insert("December", 12);

for (auto [key, value] : hash.asKeyValueRange()) {
    cout << qPrintable(key) << ": " << value << endl;
    --value; // convert to JS month indexing
}

Tenga en cuenta que tanto la clave como el valor obtenidos de esta forma son referencias a los del hash. Específicamente, al mutar el valor se modificará el propio hash.

Advertencia: Los iteradores/referencias devueltos deben considerarse invalidados la próxima vez que se llame a una función no-const sobre el hash, o cuando se destruya el hash.

Estas funciones se introdujeron en Qt 6.4.

Véase también QKeyValueIterator.

QMultiHash<Key, T>::iterator QMultiHash::begin()

Devuelve un iterador de estilo STL que apunta al primer elemento del hash.

Advertencia: Los iteradores/referencias devueltos deben considerarse invalidados la próxima vez que se llame a una función no-const sobre el hash, o cuando se destruya el hash.

Véase también constBegin() y end().

[noexcept] QMultiHash<Key, T>::const_iterator QMultiHash::begin() const

Advertencia: Los iteradores/referencias devueltos deben considerarse invalidados la próxima vez que se llame a una función no-const sobre el hash, o cuando se destruya el hash.

Esta es una función sobrecargada.

[noexcept] QMultiHash<Key, T>::const_iterator QMultiHash::cbegin() const

Devuelve un iterador const de estilo STL que apunta al primer elemento del hash.

Advertencia: Los iteradores/referencias devueltos deben considerarse invalidados la próxima vez que se llame a una función no-const sobre el hash, o cuando se destruya el hash.

Véase también begin() y cend().

[noexcept] QMultiHash<Key, T>::const_iterator QMultiHash::cend() const

Devuelve un iterador const de estilo STL que apunta al elemento imaginario después del último elemento del hash.

Advertencia: Los iteradores/referencias devueltos deben considerarse invalidados la próxima vez que se llame a una función no-const sobre el hash, o cuando se destruya el hash.

Véase también cbegin() y end().

[noexcept(...)] void QMultiHash::clear()

Elimina todos los elementos del hash y libera toda la memoria utilizada por él.

Nota: Esta función es noexcept cuando std::is_nothrow_destructible<Node>::value es true.

Véase también remove().

[noexcept] QMultiHash<Key, T>::const_iterator QMultiHash::constBegin() const

Devuelve un iterador const de estilo STL que apunta al primer elemento del hash.

Advertencia: Los iteradores/referencias devueltos deben considerarse invalidados la próxima vez que se llame a una función no-const sobre el hash, o cuando se destruya el hash.

Véase también begin() y constEnd().

[noexcept] QMultiHash<Key, T>::const_iterator QMultiHash::constEnd() const

Devuelve un iterador const de estilo STL que apunta al elemento imaginario después del último elemento del hash.

Advertencia: Los iteradores/referencias devueltos deben considerarse invalidados la próxima vez que se llame a una función no-const sobre el hash, o cuando se destruya el hash.

Véase también constBegin() y end().

[noexcept] QMultiHash<Key, T>::const_iterator QMultiHash::constFind(const Key &key, const T &value) const

Devuelve un iterador que apunta al elemento con key y value en el hash.

Si el hash no contiene dicho elemento, la función devuelve constEnd().

Advertencia: Los iteradores/referencias devueltos deben considerarse invalidados la próxima vez que se llame a una función no-const sobre el hash, o cuando se destruya el hash.

[noexcept] QMultiHash<Key, T>::const_key_value_iterator QMultiHash::constKeyValueBegin() const

Devuelve un iterador const de estilo STL que apunta a la primera entrada del hash.

Advertencia: Los iteradores/referencias devueltos deben considerarse invalidados la próxima vez que se llame a una función no-const sobre el hash, o cuando se destruya el hash.

Véase también keyValueBegin().

[noexcept] QMultiHash<Key, T>::const_key_value_iterator QMultiHash::constKeyValueEnd() const

Devuelve un iterador const de estilo STL que apunta a la entrada imaginaria después de la última entrada del hash.

Advertencia: Los iteradores/referencias devueltos deben considerarse invalidados la próxima vez que se llame a una función no-const sobre el hash, o cuando se destruya el hash.

Véase también constKeyValueBegin().

[noexcept] bool QMultiHash::contains(const Key &key, const T &value) const

Devuelve true si el hash contiene un elemento con los valores key y value; en caso contrario devuelve false.

Véase también count().

[noexcept] qsizetype QMultiHash::count(const Key &key, const T &value) const

Devuelve el número de elementos con las etiquetas key y value.

Véase también contains().

template <typename... Args> QMultiHash<Key, T>::iterator QMultiHash::emplace(const Key &key, Args &&... args)

template <typename... Args> QMultiHash<Key, T>::iterator QMultiHash::emplace(Key &&key, Args &&... args)

Inserta un nuevo elemento en el contenedor. Este nuevo elemento se construye in situ utilizando args como argumentos para su construcción.

Si ya existe un elemento con la misma clave en el hash, esta función simplemente creará uno nuevo. (Este comportamiento es diferente de replace(), que sobrescribe el valor de un elemento existente).

Devuelve un iterador que apunta al nuevo elemento.

Advertencia: Los iteradores/referencias devueltos deben considerarse invalidados la próxima vez que se llame a una función no-const sobre el hash, o cuando se destruya el hash.

Véase también insert.

template <typename... Args> QMultiHash<Key, T>::iterator QMultiHash::emplaceReplace(const Key &key, Args &&... args)

template <typename... Args> QMultiHash<Key, T>::iterator QMultiHash::emplaceReplace(Key &&key, Args &&... args)

Inserta un nuevo elemento en el contenedor. Este nuevo elemento se construye in situ utilizando args como argumentos para su construcción.

Si ya existe un elemento con la misma clave en el hash, el valor de ese elemento se sustituye por un valor construido a partir de args.

Devuelve un iterador que apunta al nuevo elemento.

Advertencia: Los iteradores/referencias devueltos deben considerarse invalidados la próxima vez que se llame a una función no-const sobre el hash, o cuando se destruya el hash.

Véase también replace y emplace.

[noexcept] QMultiHash<Key, T>::iterator QMultiHash::end()

Devuelve un iterador estilo STL que apunta al elemento imaginario después del último elemento del hash.

Advertencia: Los iteradores/referencias devueltos deben considerarse invalidados la próxima vez que se llame a una función no-const sobre el hash, o cuando se destruya el hash.

Véase también begin() y constEnd().

[noexcept] QMultiHash<Key, T>::const_iterator QMultiHash::end() const

Se trata de una función sobrecargada.

std::pair<QMultiHash<Key, T>::iterator, QMultiHash<Key, T>::iterator> QMultiHash::equal_range(const Key &key)

Devuelve un par de iteradores que delimitan el rango de valores [first, second), que se almacenan bajo key. Si el rango está vacío entonces ambos iteradores serán iguales a end().

Advertencia: Los iteradores/referencias devueltos deben considerarse invalidados la próxima vez que se llame a una función no-const sobre el hash, o cuando se destruya el hash.

[noexcept] std::pair<QMultiHash<Key, T>::const_iterator, QMultiHash<Key, T>::const_iterator> QMultiHash::equal_range(const Key &key) const

Advertencia: Los iteradores/referencias devueltos deben considerarse invalidados la próxima vez que se llame a una función no-const sobre el hash, o cuando se destruya el hash.

Esta es una función sobrecargada.

QMultiHash<Key, T>::iterator QMultiHash::erase(QMultiHash<Key, T>::const_iterator pos)

Elimina el par (clave, valor) asociado con el iterador pos del hash, y devuelve un iterador al siguiente elemento del hash.

Esta función nunca hace que QMultiHash 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 hash. Por ejemplo:

QMultiHash<QObject *, int> objectHash;
//...
QMultiHash<QObject *, int>::iterator i = objectHash.find(obj);
while (i != objectHash.end() && i.key() == obj) {
    if (i.value() == 0) {
        i = objectHash.erase(i);
    } else {
        ++i;
    }
}

Advertencia: Los iteradores/referencias devueltos deben considerarse invalidados la próxima vez que se llame a una función no-const sobre el hash, o cuando se destruya el hash.

Véase también remove(), take(), y find().

QMultiHash<Key, T>::iterator QMultiHash::find(const Key &key, const T &value)

Devuelve un iterador que apunta al elemento con key y value. Si el hash no contiene tal elemento, la función devuelve end().

Si el hash contiene múltiples ítems con key y value, el iterador devuelto apunta al ítem insertado más recientemente.

Advertencia: Los iteradores/referencias devueltos deben considerarse invalidados la próxima vez que se llame a una función no-const sobre el hash, o cuando se destruya el hash.

[noexcept] QMultiHash<Key, T>::const_iterator QMultiHash::find(const Key &key, const T &value) const

Advertencia: Los iteradores/referencias devueltos deben considerarse invalidados la próxima vez que se llame a una función no-const sobre el hash, o cuando se destruya el hash.

Esta es una función sobrecargada.

QMultiHash<Key, T>::iterator QMultiHash::insert(const Key &key, const T &value)

Inserta un nuevo elemento con la key y un valor de value.

Si ya existe un elemento con la misma clave en el hash, esta función simplemente creará uno nuevo. (Este comportamiento es diferente de replace(), que sobrescribe el valor de un elemento existente).

Devuelve un iterador que apunta al nuevo elemento.

Advertencia: Los iteradores/referencias devueltos deben considerarse invalidados la próxima vez que se llame a una función no-const sobre el hash, o cuando se destruya el hash.

Véase también replace().

[since 6.11] QMultiHash<Key, T>::iterator QMultiHash::insert(const Key &key, T &&value)

[since 6.11] QMultiHash<Key, T>::iterator QMultiHash::insert(Key &&key, const T &value)

[since 6.11] QMultiHash<Key, T>::iterator QMultiHash::insert(Key &&key, T &&value)

Estas funciones se introdujeron en Qt 6.11.

[noexcept] Key QMultiHash::key(const T &value) const

[noexcept] Key QMultiHash::key(const T &value, const Key &defaultKey) const

Devuelve la primera clave asignada a value. Si el hash no contiene ningún elemento asignado a value, devuelve defaultKey, o una clave construida por defecto si no se ha proporcionado este parámetro.

Esta función puede ser lenta(tiempo lineal), porque la estructura de datos interna de QMultiHash está optimizada para una búsqueda rápida por clave, no por valor.

[noexcept] QMultiHash<Key, T>::key_iterator QMultiHash::keyBegin() const

Devuelve un iterador const de estilo STL que apunta a la primera clave del hash.

Advertencia: Los iteradores/referencias devueltos deben considerarse invalidados la próxima vez que se llame a una función no-const sobre el hash, o cuando se destruya el hash.

Véase también keyEnd().

[noexcept] QMultiHash<Key, T>::key_iterator QMultiHash::keyEnd() const

Devuelve un iterador const de estilo STL que apunta al elemento imaginario después de la última clave del hash.

Advertencia: Los iteradores/referencias devueltos deben considerarse invalidados la próxima vez que se llame a una función no-const sobre el hash, o cuando se destruya el hash.

Véase también keyBegin().

[noexcept] QMultiHash<Key, T>::key_value_iterator QMultiHash::keyValueBegin()

Devuelve un iterador estilo STL que apunta a la primera entrada del hash.

Advertencia: Los iteradores/referencias devueltos deben considerarse invalidados la próxima vez que se llame a una función no-const sobre el hash, o cuando se destruya el hash.

Véase también keyValueEnd().

[noexcept] QMultiHash<Key, T>::const_key_value_iterator QMultiHash::keyValueBegin() const

Devuelve un iterador const de estilo STL que apunta a la primera entrada del hash.

Advertencia: Los iteradores/referencias devueltos deben considerarse invalidados la próxima vez que se llame a una función no-const sobre el hash, o cuando se destruya el hash.

Véase también keyValueEnd().

[noexcept] QMultiHash<Key, T>::key_value_iterator QMultiHash::keyValueEnd()

Devuelve un iterador estilo STL que apunta a la entrada imaginaria después de la última entrada en el hash.

Advertencia: Los iteradores/referencias devueltos deben considerarse invalidados la próxima vez que se llame a una función no-const sobre el hash, o cuando se destruya el hash.

Véase también keyValueBegin().

[noexcept] QMultiHash<Key, T>::const_key_value_iterator QMultiHash::keyValueEnd() const

Devuelve un iterador const de estilo STL que apunta a la entrada imaginaria después de la última entrada del hash.

Advertencia: Los iteradores/referencias devueltos deben considerarse invalidados la próxima vez que se llame a una función no-const sobre el hash, o cuando se destruya el hash.

Véase también keyValueBegin().

QList<Key> QMultiHash::keys() const

Devuelve una lista que contiene todas las claves del hash, en un orden arbitrario. Las claves que aparecen varias veces en el hash también aparecen varias veces en la lista.

Se garantiza que el orden sea el mismo que el utilizado por values().

Esta función crea una nueva lista en tiempo lineal. El tiempo y uso de memoria que conlleva puede evitarse iterando de keyBegin() a keyEnd().

Véase también values() y key().

qsizetype QMultiHash::remove(const Key &key)

Elimina todos los elementos que tienen el key del hash. Devuelve el número de elementos eliminados.

Véase también remove(const Key &key, const T &value).

qsizetype QMultiHash::remove(const Key &key, const T &value)

Elimina del hash todos los elementos que tienen el key y el valor value. Devuelve el número de elementos eliminados.

Véase también remove().

[since 6.1] template <typename Predicate> qsizetype QMultiHash::removeIf(Predicate pred)

Elimina del multi hash todos los elementos para los que el predicado pred devuelve verdadero.

La función admite predicados que toman un argumento de tipo QMultiHash<Key, T>::iterator, o un argumento de tipo std::pair<const Key &, T &>.

Devuelve el número de elementos eliminados, si los hay.

Esta función se introdujo en Qt 6.1.

Véase también clear() y take().

QMultiHash<Key, T>::iterator QMultiHash::replace(const Key &key, const T &value)

Inserta un nuevo elemento con el key y un valor de value.

Si ya existe un elemento con el valor key, el valor de ese elemento se sustituye por value.

Si hay varios elementos con key, el valor del elemento insertado más recientemente se sustituye por value.

Devuelve un iterador que apunta al elemento nuevo/actualizado.

Advertencia: Los iteradores/referencias devueltos deben considerarse invalidados la próxima vez que se llame a una función no-const sobre el hash, o cuando se destruya el hash.

Véase también insert().

[noexcept] void QMultiHash::swap(QMultiHash<Key, T> &other)

Intercambia este multi-hash con other. Esta operación es muy rápida y nunca falla.

T QMultiHash::take(const Key &key)

Elimina el elemento con key del hash y devuelve el valor asociado a él.

Si el elemento no existe en el hash, la función simplemente devuelve un valor construido por defecto. Si hay varios elementos para key en el hash, sólo se elimina el insertado más recientemente.

Si no se utiliza el valor devuelto, remove() es más eficiente.

Véase también remove().

QList<Key> QMultiHash::uniqueKeys() const

Devuelve una lista con todas las claves del mapa. Las claves que aparecen varias veces en el mapa sólo aparecen una vez en la lista devuelta.

Véase también keys() y values().

[since 6.0] QMultiHash<Key, T> &QMultiHash::unite(const QHash<Key, T> &other)

Inserta todos los elementos del hash other en este hash y devuelve una referencia a este hash.

Esta función se introdujo en Qt 6.0.

Véase también insert().

QMultiHash<Key, T> &QMultiHash::unite(const QMultiHash<Key, T> &other)

Inserta todos los elementos del hash other en este hash y devuelve una referencia a este hash.

Véase también insert().

[noexcept] T QMultiHash::value(const Key &key) const

[noexcept] T QMultiHash::value(const Key &key, const T &defaultValue) const

Devuelve el valor asociado a key.

Si el hash no contiene ningún elemento con el key, la función devuelve defaultValue, o un valor construido por defecto si no se ha suministrado este parámetro.

Si hay varios elementos para el key en el hash, se devuelve el valor del insertado más recientemente.

QList<T> QMultiHash::values() const

Devuelve una lista que contiene todos los valores del hash, en un orden arbitrario. Si una clave está asociada a múltiples valores, todos sus valores estarán en la lista, y no sólo el insertado más recientemente.

Se garantiza que el orden sea el mismo que el utilizado por keys().

Esta función crea una nueva lista, en tiempo lineal. El uso de tiempo y memoria que conlleva puede evitarse iterando desde keyValueBegin() hasta keyValueEnd().

Véase también keys() y value().

QList<T> QMultiHash::values(const Key &key) const

Devuelve una lista de todos los valores asociados a key, desde el más reciente hasta el menos reciente.

Se trata de una función sobrecargada.

Véase también count() y insert().

QMultiHash<Key, T> QMultiHash::operator+(const QMultiHash<Key, T> &other) const

Devuelve un hash que contiene todos los elementos de este hash además de todos los elementos de other. Si una clave es común a ambos hashes, el hash resultante contendrá la clave varias veces.

Véase también operator+=().

QMultiHash<Key, T> &QMultiHash::operator+=(const QMultiHash<Key, T> &other)

Inserta todos los elementos del hash other en este hash y devuelve una referencia a este hash.

Véase también unite() y insert().

T &QMultiHash::operator[](const Key &key)

Devuelve el valor asociado a key como referencia modificable.

Si el hash no contiene ningún elemento con el key, la función inserta un valor construido por defecto en el hash con el key, y devuelve una referencia al mismo.

Si el hash contiene varios elementos con key, esta función devuelve una referencia al valor insertado más recientemente.

Advertencia: Los iteradores/referencias devueltos deben considerarse invalidados la próxima vez que se llame a una función no-const sobre el hash, o cuando se destruya el hash.

Véase también insert() y value().

No miembros relacionados

[since 6.1] template < typename Key, typename T, typename Predicate > qsizetype erase_if(QMultiHash<Key, T> &hash, Predicate pred)

Elimina todos los elementos para los que el predicado pred devuelve verdadero del multi hash hash.

La función admite predicados que toman un argumento de tipo QMultiHash<Key, T>::iterator, o un argumento de tipo std::pair<const Key &, T &>.

Devuelve el número de elementos eliminados, si los hay.

Esta función se introdujo en Qt 6.1.

[noexcept(...)] template <typename Key, typename T> size_t qHash(const QMultiHash<Key, T> &key, size_t seed = 0)

Devuelve el valor hash para key, utilizando seed para sembrar el cálculo.

Los tipos Key y T deben ser soportados por qHash().

Nota: Esta función es noexcept cuando noexcept(qHash(std::declval<Key&>())) && noexcept(qHash(std::declval<T&>())) es true.

[noexcept] bool operator!=(const QMultiHash<Key, T> &lhs, const QMultiHash<Key, T> &rhs)

Devuelve true si el multihash lhs no es igual al multihash rhs; en caso contrario devuelve false.

Dos multihashes se consideran iguales si contienen los mismos pares (clave, valor).

Esta función requiere que el tipo de valor implemente operator==().

Véase también operator==().

template <typename Key, typename T> QDataStream &operator<<(QDataStream &out, const QMultiHash<Key, T> &hash)

Escribe el hash hash en el flujo out.

Esta función requiere que los tipos clave y valor se implementen operator<<().

Ver también Serializar tipos de datos Qt.

[noexcept] bool operator==(const QMultiHash<Key, T> &lhs, const QMultiHash<Key, T> &rhs)

Devuelve true si el multihash lhs es igual al multihash rhs; en caso contrario devuelve false.

Dos multihashes se consideran iguales si contienen los mismos pares (clave, valor).

Esta función requiere que el tipo de valor implemente operator==().

Véase también operator!=().

template <typename Key, typename T> QDataStream &operator>>(QDataStream &in, QMultiHash<Key, T> &hash)

Lee un hash del flujo in en hash.

Esta función requiere que los tipos clave y valor implementen operator>>().

Ver también Serializar tipos de datos Qt.

© 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.