Namespaces
Variants

std::unordered_map<Key,T,Hash,KeyEqual,Allocator>:: equal_range

From cppreference.net

std:: pair < iterator, iterator > equal_range ( const Key & key ) ;
(1) (desde C++11)
std:: pair < const_iterator, const_iterator > equal_range ( const Key & key ) const ;
(2) (desde C++11)
template < class K >
std:: pair < iterator, iterator > equal_range ( const K & x ) ;
(3) (desde C++20)
template < class K >
std:: pair < const_iterator, const_iterator > equal_range ( const K & x ) const ;
(4) (desde C++20)
1,2) Devuelve un rango que contiene todos los elementos con clave key en el contenedor. El rango está definido por dos iteradores, el primero apuntando al primer elemento del rango deseado y el segundo apuntando después del último elemento del rango.
3,4) Devuelve un rango que contiene todos los elementos en el contenedor con clave equivalente a x . Esta sobrecarga participa en la resolución de sobrecarga solo si Hash y KeyEqual son ambos transparentes . Esto asume que dicho Hash puede ser invocado tanto con el tipo K como con el tipo Key , y que el KeyEqual es transparente, lo que, en conjunto, permite llamar a esta función sin construir una instancia de Key .

Contenidos

Parámetros

key - valor clave para comparar los elementos
x - un valor de cualquier tipo que puede compararse transparentemente con una clave

Valor de retorno

std::pair que contiene un par de iteradores que definen el rango deseado. Si no existen tales elementos, se devuelven iteradores pasando-el-final (ver end() ) como ambos elementos del par.

Complejidad

Caso promedio lineal en el número de elementos con la clave key , caso peor lineal en el tamaño del contenedor.

Notas

Macro de prueba de características Valor Estándar Característica
__cpp_lib_generic_unordered_lookup 201811L (C++20) Búsqueda de comparación heterogénea en contenedores asociativos desordenados , sobrecargas (3,4)

Ejemplo

#include <iostream>
#include <unordered_map>
int main()
{
    std::unordered_map<int,char> map = {{1, 'a'},{2, 'b'}};
    auto range = map.equal_range(1);
    for (auto it = range.first; it != range.second; ++it)
        std::cout << it->first << ' ' << it->second << '\n';
}

Salida:

1 a

Véase también

encuentra elemento con clave específica
(función miembro pública)
(C++20)
verifica si el contenedor contiene elemento con clave específica
(función miembro pública)
devuelve el número de elementos que coinciden con clave específica
(función miembro pública)
devuelve rango de elementos que coinciden con clave específica
(plantilla de función)