std::unordered_multiset<Key,Hash,KeyEqual,Allocator>:: equal_range
From cppreference.net
<
cpp
|
container
|
unordered multiset
|
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 más-allá-del-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
Calcula la frecuencia de caracteres para una cadena dada.
Ejecutar este código
#include <iostream> #include <iterator> #include <string> #include <unordered_set> int main() { std::string sentence{"cppreference.net"}; std::cout << "The sentence: " << sentence << '\n'; std::unordered_multiset<char> sequence; for (char x : sentence) sequence.insert(x); std::cout << "The sequence: { "; for (char x : sequence) std::cout << x << ' '; std::cout << "}\n" "Symbol:Frequency: "; for (auto it = sequence.begin(); it != sequence.end();) { if (auto [first, last] = sequence.equal_range(*it); first != last) { std::cout << *first << ":" << std::distance(first, last) << " "; it = last; } else ++it; } }
Salida posible:
The sentence: cppreference.net
The sequence: { m o c c c p p r r e e e e f n . }
Symbol:Frequency: m:1 o:1 c:3 p:2 r:2 e:4 f:1 n:1 .:1
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) |