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
|
Esta sección está incompleta
Motivo: sin 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) |
|
(C++11)
|
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) |