std::flat_map<Key,T,Compare,KeyContainer,MappedContainer>:: insert
From es.cppreference.net
|
std::
pair
<
iterator,
bool
>
insert
(
const
value_type
&
value
)
;
|
(1) | (desde C++23) |
|
std::
pair
<
iterator,
bool
>
insert
(
value_type
&&
value
)
;
|
(2) | (desde C++23) |
|
iterator insert
(
const_iterator pos,
const
value_type
&
value
)
;
|
(3) | (desde C++23) |
|
iterator insert
(
const_iterator pos, value_type
&&
value
)
;
|
(4) | (desde C++23) |
|
template
<
class
P
>
std:: pair < iterator, bool > insert ( P && x ) ; |
(5) | (desde C++23) |
|
template
<
class
P
>
iterator insert ( const_iterator pos, P && x ) ; |
(6) | (desde C++23) |
|
template
<
class
InputIt
>
void insert ( InputIt first, InputIt last ) ; |
(7) | (desde C++23) |
|
template
<
class
InputIt
>
void insert ( std:: sorted_unique_t , InputIt first, InputIt last ) ; |
(8) | (desde C++23) |
|
void
insert
(
std::
initializer_list
<
key_type
>
ilist
)
;
|
(9) | (desde C++23) |
|
void
insert
(
std::
sorted_unique_t
s,
std::
initializer_list
<
key_type
>
ilist
)
;
|
(10) | (desde C++23) |
Inserta elemento(s) en el contenedor, si el contenedor no contiene ya un elemento con una clave equivalente.
1)
Inserta
value
. Equivalente a
return
emplace
(
value
)
;
.
2)
Inserta
value
. Equivalente a
return
emplace
(
std
::
move
(
value
)
)
;
.
3)
Inserta
value
en la posición más cercana posible a la posición inmediatamente anterior a
pos
. Equivalente a
return
emplace_hint
(
pos, value
)
;
.
4)
Inserta
value
en la posición más cercana posible a la posición inmediatamente anterior a
pos
. Equivalente a
return
emplace_hint
(
pos, std
::
move
(
value
)
)
;
.
5)
Si
*
this
ya contiene un elemento que se compara transparentemente
equivalente
a
x
, no hace nada. De lo contrario, inserta
x
en
*
this
como si fuera mediante
emplace
(
std::
forward
<
P
>
(
x
)
)
;
. Esta sobrecarga participa en la resolución de sobrecarga solo si
std::
is_constructible_v
<
std::
pair
<
key_type, mapped_type
>
, P
>
es
true
.
6)
Si
*
this
ya contiene un elemento que se compara transparentemente
equivalente
a
x
, no hace nada. De lo contrario, inserta
x
en
*
this
en la posición más cercana posible a la posición inmediatamente anterior a
pos
. Equivalente a
return
emplace_hint
(
pos,
std::
forward
<
P
>
(
x
)
)
;
. Esta sobrecarga participa en la resolución de sobrecarga solo si
std::
is_constructible_v
<
std::
pair
<
key_type, mapped_type
>
, P
>
es
true
.
7)
Inserta elementos del rango
[
first
,
last
)
como si realizara las siguientes operaciones secuencialmente:
-
Añade elementos a
ccomo si fuera mediante
for ( ; first ! = last ; ++ first )
{
value_type value = * first ;
c. keys . insert ( c. keys . end ( ) , std :: move ( value. first ) ) ;
c. values . insert ( c. values . end ( ) , std :: move ( value. second ) ) ;
} -
Ordena el rango de elementos recién insertados con respecto a
value_comp. - Combina el rango ordenado resultante y el rango ordenado de elementos preexistentes en un único rango ordenado.
-
Elimina los elementos duplicados como si fuera mediante:
auto zv = std :: views:: zip ( c. keys , c. values ) ;
auto it = ranges:: unique ( zv, key_equiv ( compare ) ) . begin ( ) ;
auto dist = std:: distance ( zv. begin ( ) , it ) ;
c. keys . erase ( c. keys . begin ( ) + dist, c. keys . end ( ) ) ;
c. values . erase ( c. values . begin ( ) + dist, c. values . end ( ) ) ;
Puede asignar memoria durante la operación de fusión in situ.
Si múltiples elementos en el rango tienen claves que son equivalentes en la comparación, no está especificado qué elemento se inserta (pendiente de
LWG2844
).
8)
Inserta elementos del rango
[
first
,
last
)
como si realizara las siguientes operaciones secuencialmente:
-
Añade elementos a
ccomo si fuera mediante
for ( ; first ! = last ; ++ first )
{
value_type value = * first ;
c. keys . insert ( c. keys . end ( ) , std :: move ( value. first ) ) ;
c. values . insert ( c. values . end ( ) , std :: move ( value. second ) ) ;
} - Combina el rango ordenado de elementos recién añadidos y el rango ordenado de elementos preexistentes en un único rango ordenado.
-
Elimina los elementos duplicados como si fuera mediante:
auto zv = std :: views:: zip ( c. keys , c. values ) ;
auto it = ranges:: unique ( zv, key_equiv ( compare ) ) . begin ( ) ;
auto dist = std:: distance ( zv. begin ( ) , it ) ;
c. keys . erase ( c. keys . begin ( ) + dist, c. keys . end ( ) ) ;
c. values . erase ( c. values . begin ( ) + dist, c. values . end ( ) ) ;
Puede asignar memoria durante la operación de fusión in situ.
Si múltiples elementos en el rango tienen claves que son equivalentes en la comparación, no está especificado qué elemento se inserta (pendiente de
LWG2844
).
9)
Inserta elementos desde la lista de inicialización
ilist
. Equivalente a
insert
(
ilist.
begin
(
)
, ilist.
end
(
)
)
;
.
Si múltiples elementos en el rango tienen claves que son equivalentes en la comparación, no está especificado qué elemento se inserta (pendiente de
LWG2844
).
10)
Inserta elementos desde la lista de inicialización
ilist
. Equivalente a
insert
(
s, ilist.
begin
(
)
, ilist.
end
(
)
)
;
.
Si múltiples elementos en el rango tienen claves que son equivalentes en la comparación, no está especificado qué elemento se inserta (pendiente de
LWG2844
).
| La información sobre invalidación de iteradores está copiada de |
Contenidos |
Parámetros
| pos | - | un iterador a la posición antes de la cual se insertará el nuevo elemento |
| value | - | un valor de elemento a insertar |
| first, last | - | el par de iteradores que define el rango fuente de elementos a insertar |
| ilist | - | una lista de inicializadores de la cual insertar los valores |
| x | - | un valor de cualquier tipo que pueda compararse transparentemente con una clave |
| s | - |
una etiqueta de desambiguación que indica que la secuencia de entrada está ordenada (con respecto a
value_comp()
) y contiene solo elementos únicos
|
| Requisitos de tipo | ||
-
InputIt
debe cumplir con los requisitos de
LegacyInputIterator
.
|
||
Valor de retorno
1,2)
Un par que consiste en un iterador al elemento insertado (o al elemento que impidió la inserción) y un valor
bool
establecido en
true
si y solo si la inserción tuvo lugar.
3,4)
Un iterador al elemento insertado, o al elemento que impidió la inserción.
5)
Un par que consiste en un iterador al elemento insertado (o al elemento que impidió la inserción) y un valor
bool
establecido en
true
si y solo si la inserción tuvo lugar.
6)
Un iterador al elemento insertado, o al elemento que impidió la inserción.
7-10)
(ninguno)
Excepciones
1-6)
Si se lanza una excepción por cualquier operación, la inserción no tiene efecto.
|
Esta sección está incompleta
Razón: casos 7-10 |
Complejidad
1-6)
Lineal en
size()
.
7)
N
+
M·log
(
M
)
, donde
N
es el
size()
antes de la operación y
M
es
std::
distance
(
first, last
)
.
8)
Lineal en
size()
.
Notas
La inserción con sugerencia
(
(
3,4
)
y
(
6
)
)
no devuelve un booleano para ser compatible en firma con la inserción posicional en contenedores secuenciales, como
std::vector::insert
. Esto hace posible crear insertores genéricos como
std::inserter
. Una forma de verificar el éxito de una inserción con sugerencia es comparar
size()
antes y después.
Ejemplo
|
Esta sección está incompleta
Razón: sin ejemplo |
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) |
|
|
inserta un elemento o asigna al elemento actual si la clave ya existe
(función miembro pública) |
|
|
crea un
std::insert_iterator
del tipo inferido del argumento
(plantilla de función) |