Namespaces
Variants

std::unordered_multimap<Key,T,Hash,KeyEqual,Allocator>:: insert

From cppreference.net
Definido en el encabezado <unordered_map>
iterator insert ( const value_type & value ) ;
(1) (desde C++11)
iterator insert ( value_type && value ) ;
(2) (desde C++17)
template < class P >
iterator insert ( P && value ) ;
(3) (desde C++11)
iterator insert ( const_iterator hint, const value_type & value ) ;
(4) (desde C++11)
iterator insert ( const_iterator hint, value_type && value ) ;
(5) (desde C++17)
template < class P >
iterator insert ( const_iterator hint, P && value ) ;
(6) (desde C++11)
template < class InputIt >
void insert ( InputIt first, InputIt last ) ;
(7) (desde C++11)
void insert ( std:: initializer_list < value_type > ilist ) ;
(8) (desde C++11)
iterator insert ( node_type && nh ) ;
(9) (desde C++17)
iterator insert ( const_iterator hint, node_type && nh ) ;
(10) (desde C++17)

Inserta elemento(s) en el contenedor.

1-3) Inserta value .
La sobrecarga (3) es equivalente a emplace ( std:: forward < P > ( value ) ) y solo participa en la resolución de sobrecarga si std:: is_constructible < value_type, P && > :: value == true .
4-6) Inserta value , usando hint como sugerencia no vinculante sobre dónde debería comenzar la búsqueda.
La sobrecarga (6) es equivalente a emplace_hint ( hint, std:: forward < P > ( value ) ) y solo participa en la resolución de sobrecarga si std:: is_constructible < value_type, P && > :: value == true .
7) Inserta elementos del rango [ first , last ) .
Si [ first , last ) no es un rango válido , o first y/o last son iteradores dentro de * this , el comportamiento es indefinido.
8) Inserta elementos desde la lista de inicialización ilist .
9) Si nh es un node handle vacío, no hace nada. De lo contrario, inserta el elemento poseído por nh en el contenedor y devuelve un iterador que apunta al elemento insertado. El comportamiento es indefinido si nh no está vacío y get_allocator ( ) ! = nh. get_allocator ( ) .
10) Si nh es un node handle vacío, no hace nada y retorna el iterador final. De lo contrario, inserta el elemento poseído por nh en el contenedor, y retorna el iterador que apunta al elemento con clave equivalente a nh. key ( ) . hint se utiliza como sugerencia no vinculante sobre dónde debería comenzar la búsqueda. El comportamiento es indefinido si nh no está vacío y get_allocator ( ) ! = nh. get_allocator ( ) .

Si después de la operación el nuevo número de elementos es mayor que el antiguo max_load_factor() * bucket_count() se produce una redistribución.
Si ocurre redistribución (debido a la inserción), todos los iteradores quedan invalidados. En caso contrario (sin redistribución), los iteradores no se invalidan. Si la inserción es exitosa, los punteros y referencias al elemento obtenidos mientras se mantiene en el manejador de nodo se invalidan, y los punteros y referencias obtenidos para ese elemento antes de ser extraído pasan a ser válidos. (desde C++17)

Contenidos

Parámetros

hint - iterador, utilizado como sugerencia sobre dónde insertar el contenido
value - valor del elemento a insertar
first, last - el par de iteradores que define el rango fuente de elementos a insertar
ilist - lista de inicializadores de la cual insertar los valores
nh - un manejador de nodo compatible
Requisitos de tipo
-
InputIt debe cumplir con los requisitos de LegacyInputIterator .

Valor de retorno

1-6) Un iterador al elemento insertado.
7,8) (ninguno)
9,10) Iterador final si nh estaba vacío, iterador que apunta al elemento insertado en caso contrario.

Excepciones

1-6) Si se lanza una excepción por cualquier motivo, estas funciones no tienen efecto ( strong exception safety guarantee ).
7,8) No hay garantía de seguridad de excepciones.
9,10) Si se lanza una excepción por cualquier motivo, estas funciones no tienen efecto ( strong exception safety guarantee ).

Complejidad

1-6) Caso promedio: O(1) , caso peor O(size()) .
7,8) Caso promedio: O(N) , donde N es el número de elementos a insertar. Caso peor: O(N * size() + N) .
9,10) Caso promedio: O(1) , caso peor O(size()) .

Ejemplo

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 2005 C++11 las sobrecargas (3,6) solo participarían en la resolución de sobrecarga
si P es convertible implícitamente a value_type
solo participa si value_type
es construible desde P&&

Véase también

construye elemento in-situ
(función miembro pública)
construye elementos in-situ usando una pista
(función miembro pública)
crea un std::insert_iterator del tipo inferido del argumento
(plantilla de función)