std::unordered_map<Key,T,Hash,KeyEqual,Allocator>:: erase
|
iterator erase
(
iterator pos
)
;
|
(1) |
(desde C++11)
(constexpr desde C++26) |
|
iterator erase
(
const_iterator pos
)
;
|
(2) |
(desde C++11)
(constexpr desde C++26) |
|
iterator erase
(
const_iterator first, const_iterator last
)
;
|
(3) |
(desde C++11)
(constexpr desde C++26) |
|
size_type erase
(
const
Key
&
key
)
;
|
(4) |
(desde C++11)
(constexpr desde C++26) |
|
template
<
class
K
>
size_type erase ( K && x ) ; |
(5) |
(desde C++23)
(constexpr desde C++26) |
Elimina los elementos especificados del contenedor. Se preserva el orden de los elementos restantes. (Esto hace posible eliminar elementos individuales mientras se itera a través del contenedor.)
[
first
,
last
)
, que debe ser un rango válido en
*
this
.
Hash
y
KeyEqual
son ambos
transparentes
, y ni
iterator
ni
const_iterator
son convertibles implícitamente desde
K
. 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
.
Las referencias e iteradores a los elementos eliminados quedan invalidados. Otros iteradores y referencias no se invalidan.
El iterador pos debe ser dereferenciable. Por lo tanto, el iterador end() (que es válido, pero no es dereferenciable) no puede usarse como valor para pos .
Contenido
Parámetros
Valor de retorno
1-3)
Iterador que sigue al último elemento eliminado.
4)
Número de elementos eliminados (0 o 1).
5)
Número de elementos eliminados.
Excepciones
1-3)
No lanza nada.
4,5)
Cualquier excepción lanzada por los objetos
Hash
y
KeyEqual
.
Complejidad
Dada una instancia
c
de
1,2)
Caso promedio: constante, caso peor:
c.
size
(
)
.
4)
Caso promedio:
c.
count
(
key
)
, caso peor:
c.
size
(
)
.
5)
Caso promedio:
c.
count
(
x
)
, caso peor:
c.
size
(
)
.
Notas
EjemploEjecute este código #include <unordered_map>
#include <iostream>
int main()
{
std::unordered_map<int, std::string> map =
{
{1, "one"}, {2, "two"}, {3, "three"},
{4, "four"}, {5, "five"}, {6, "six"}
};
// erase all odd keys from map
for (auto it = map.begin(); it != map.end();)
{
if (it->first % 2 != 0)
it = map.erase(it);
else
++it;
}
for (const auto& pair : map)
std::cout << pair.second << ' ';
std::cout << '\n';
}
Posible salida: two four six
Informes de defectosLos siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.
Véase también
|