En esta página

QMultiMap::iterator Class

class QMultiMap::iterator

La clase QMultiMap::iterator proporciona un iterador no-const de estilo STL para QMultiMap. Más...

Tipos públicos

Funciones públicas

iterator()
const Key &key() const
T &value() const
T &operator*() const
QMultiMap<Key, T>::iterator &operator++()
QMultiMap<Key, T>::iterator operator++(int)
QMultiMap<Key, T>::iterator &operator--()
QMultiMap<Key, T>::iterator operator--(int)
T *operator->() const
bool operator!=(const QMultiMap<Key, T>::iterator &lhs, const QMultiMap<Key, T>::iterator &rhs)
bool operator==(const QMultiMap<Key, T>::iterator &lhs, const QMultiMap<Key, T>::iterator &rhs)

Descripción detallada

QMultiMap<Key, T>::iterator le permite iterar sobre un QMultiMap y modificar el valor (pero no la clave) almacenado bajo una clave en particular. Si desea iterar sobre una const QMultiMap, debe utilizar QMultiMap::const_iterator. Generalmente es una buena práctica usar QMultiMap::const_iterator sobre un QMultiMap no-const también, a menos que necesite cambiar el QMultiMap a través del iterador. Los iteradores const son ligeramente más rápidos y pueden mejorar la legibilidad del código.

El constructor por defecto QMultiMap::iterator crea un iterador no inicializado. Debes inicializarlo usando una función QMultiMap como QMultiMap::begin(), QMultiMap::end(), o QMultiMap::find() antes de que puedas empezar a iterar. He aquí un bucle típico que imprime todos los pares (clave, valor) almacenados en un mapa:

A diferencia de QMultiHash, que almacena sus elementos en un orden arbitrario, QMultiMap almacena sus elementos ordenados por clave. Los elementos que comparten la misma clave aparecerán consecutivamente, desde el valor insertado más recientemente hasta el menos reciente.

He aquí un ejemplo que incrementa en 2 cada valor almacenado en QMultiMap:

for (auto i = multimap.begin(), end = multimap.end(); i != end; ++i)
    i.value() += 2;

Para eliminar elementos de un QMultiMap se puede utilizar erase_if(QMultiMap<Key, T> &map, Predicate pred):

erase_if(multimap, [](const QMultiMap<QString, int>::iterator it) { return it.value() > 10; });

Se pueden usar múltiples iteradores en el mismo mapa. Si añades elementos al mapa, los iteradores existentes seguirán siendo válidos. Si eliminas elementos del mapa, los iteradores que apunten a los elementos eliminados se convertirán en iteradores colgantes.

Advertencia: Los iteradores sobre contenedores implícitamente compartidos no funcionan exactamente igual que los iteradores STL. Debes evitar copiar un contenedor mientras los iteradores estén activos en ese contenedor. Para más información, lee Problema de los iteradores compartidos implícitamente.

Ver también QMultiMap::const_iterator, QMultiMap::key_iterator, y QMultiMap::key_value_iterator.

Documentación de tipos de miembros

[alias] iterator::iterator_category

Un sinónimo de std::bidirectional_iterator_tag que indica que este iterador es un iterador bidireccional.

Documentación de las funciones miembro

iterator::iterator()

Construye un iterador no inicializado.

Funciones como key(), value(), y operator++() no deben ser llamadas en un iterador no inicializado. Utilice operator=() para asignarle un valor antes de utilizarlo.

Véase también QMultiMap::begin() y QMultiMap::end().

const Key &iterator::key() const

Devuelve la clave del elemento actual como una referencia constante.

No hay forma directa de cambiar la clave de un elemento a través de un iterador, aunque puede hacerse llamando a QMultiMap::erase() seguido de QMultiMap::insert().

Véase también value().

T &iterator::value() const

Devuelve una referencia modificable al valor del elemento actual.

Puede cambiar el valor de un elemento utilizando value() en el lado izquierdo de una asignación, por ejemplo:

if (i.key() == "Hello")
    i.value() = "Bonjour";

Véase también key() y operator*().

T &iterator::operator*() const

Devuelve una referencia modificable al valor del elemento actual.

Igual que value().

Véase también key().

QMultiMap<Key, T>::iterator &iterator::operator++()

El operador de prefijo ++ (++i) avanza el iterador al siguiente elemento del mapa múltiple y devuelve un iterador al nuevo elemento actual.

Llamar a esta función en QMultiMap::end() conduce a resultados indefinidos.

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

QMultiMap<Key, T>::iterator iterator::operator++(int)

El operador postfijo ++ (i++) avanza el iterador al siguiente elemento del mapa múltiple y devuelve un iterador al elemento previamente actual.

Se trata de una función sobrecargada.

QMultiMap<Key, T>::iterator &iterator::operator--()

El operador de prefijo -- (--i) convierte en actual el elemento precedente y devuelve un iterador que apunta al nuevo elemento actual.

Llamar a esta función en QMultiMap::begin() conduce a resultados indefinidos.

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

QMultiMap<Key, T>::iterator iterator::operator--(int)

El operador postfijo -- (i--) hace actual el elemento precedente y devuelve un iterador que apunta al elemento previamente actual.

Se trata de una función sobrecargada.

T *iterator::operator->() const

Devuelve un puntero al valor del elemento actual.

Véase también value().

No miembros relacionados

bool operator!=(const QMultiMap<Key, T>::iterator &lhs, const QMultiMap<Key, T>::iterator &rhs)

Devuelve true si lhs apunta a un elemento distinto del iterador rhs; en caso contrario devuelve false.

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

bool operator==(const QMultiMap<Key, T>::iterator &lhs, const QMultiMap<Key, T>::iterator &rhs)

Devuelve true si lhs apunta al mismo elemento que el iterador rhs; en caso contrario devuelve false.

Véase también 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.