Namespaces
Variants

std::multiset<Key,Compare,Allocator>:: insert

From cppreference.net
iterator insert ( const value_type & value ) ;
(1)
iterator insert ( value_type && value ) ;
(2) (desde C++11)
(3)
iterator insert ( iterator pos, const value_type & value ) ;
(hasta C++11)
iterator insert ( const_iterator pos, const value_type & value ) ;
(desde C++11)
iterator insert ( const_iterator pos, value_type && value ) ;
(4) (desde C++11)
template < class InputIt >
void insert ( InputIt first, InputIt last ) ;
(5)
void insert ( std:: initializer_list < value_type > ilist ) ;
(6) (desde C++11)
iterator insert ( node_type && nh ) ;
(7) (desde C++17)
iterator insert ( const_iterator pos, node_type && nh ) ;
(8) (desde C++17)

Inserta elemento(s) en el contenedor. Se preserva el orden de los elementos equivalentes restantes.

1,2) Inserta value . Si el contenedor tiene elementos con clave equivalente, inserta en el límite superior de ese rango.
3,4) Inserta value en la posición más cercana posible a la posición inmediatamente anterior a pos .
5) Inserta elementos del rango [ first , last ) .
6) Inserta elementos desde la lista de inicializadores ilist .
7) 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. Si existe un rango que contiene elementos con claves equivalentes a nh. key ( ) en el contenedor, el elemento se inserta al final de ese rango. El comportamiento es indefinido si nh no está vacío y get_allocator ( ) ! = nh. get_allocator ( ) .
8) 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 ( ) . El elemento se inserta tan cerca como sea posible de la posición inmediatamente anterior a pos . El comportamiento es indefinido si nh no está vacío y get_allocator ( ) ! = nh. get_allocator ( ) .

No se invalidan iteradores ni referencias. Si la inserción es exitosa, se invalidan los punteros y referencias al elemento obtenidos mientras se mantiene en el node handle, 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

pos - iterador a la posición antes de la cual se insertará el nuevo elemento
value - valor del elemento a insertar
first, last - el par de iteradores que define el rango fuente de elementos a insertar
ilist - lista de inicialización 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-4) Un iterador al elemento insertado.
5,6) (ninguno)
7,8) Iterador final si nh estaba vacío, iterador que apunta al elemento insertado en caso contrario.

Excepciones

1-4,7,8) Si se lanza una excepción por cualquier operación, la inserción no tiene efecto.
5,6) No hay garantía de seguridad ante excepciones.

Complejidad

1,2,7) O(log(size()))
3,4,8) Amortizado constante si la inserción ocurre en la posición inmediatamente anterior a pos , O(log(size())) en caso contrario.
5,6) O(N·log(size() + N)) , donde N es el número de elementos a insertar.

Ejemplo

Informes de defectos

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

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 233 C++98 pos era solo una sugerencia, podía ser ignorada completamente la inserción debe realizarse
lo más cerca posible de la
posición inmediatamente anterior a pos
LWG 264 C++98 la complejidad de la sobrecarga (5) debía ser lineal si
el rango [first, last) está ordenado según Compare
se eliminó el requisito lineal
en este caso especial
LWG 371 C++98 no se garantizaba que se preservara el orden de los elementos equivalentes se requiere que se preserve

Véase también

(C++11)
construye elementos en el lugar
(función miembro pública)
construye elementos en el lugar usando una pista
(función miembro pública)
crea un std::insert_iterator del tipo inferido del argumento
(plantilla de función)