std::multiset<Key,Compare,Allocator>:: insert
From cppreference.net
|
iterator insert
(
const
value_type
&
value
)
;
|
(1) | |
|
iterator insert
(
value_type
&&
value
)
;
|
(2) | (depuis C++11) |
| (3) | ||
|
iterator insert
(
iterator pos,
const
value_type
&
value
)
;
|
(jusqu'à C++11) | |
|
iterator insert
(
const_iterator pos,
const
value_type
&
value
)
;
|
(depuis C++11) | |
|
iterator insert
(
const_iterator pos, value_type
&&
value
)
;
|
(4) | (depuis C++11) |
|
template
<
class
InputIt
>
void insert ( InputIt first, InputIt last ) ; |
(5) | |
|
void
insert
(
std::
initializer_list
<
value_type
>
ilist
)
;
|
(6) | (depuis C++11) |
|
iterator insert
(
node_type
&&
nh
)
;
|
(7) | (depuis C++17) |
|
iterator insert
(
const_iterator pos, node_type
&&
nh
)
;
|
(8) | (depuis C++17) |
Insère un ou plusieurs éléments dans le conteneur. L'ordre des éléments équivalents restants est préservé.
1,2)
Insère
value
. Si le conteneur a des éléments avec une clé équivalente, insère à la limite supérieure de cette plage.
3,4)
Insère
value
à la position aussi proche que possible de la position juste avant
pos
.
5)
Insère les éléments de la plage
[
first
,
last
)
.
6)
Insère des éléments à partir d'une liste d'initialisation
ilist
.
7)
Si
nh
est un
node handle
vide, ne fait rien. Sinon, insère l'élément possédé par
nh
dans le conteneur et retourne un itérateur pointant vers l'élément inséré. Si une plage contenant des éléments avec des clés équivalentes à
nh.
key
(
)
existe dans le conteneur, l'élément est inséré à la fin de cette plage. Le comportement est indéfini si
nh
n'est pas vide et
get_allocator
(
)
!
=
nh.
get_allocator
(
)
.
8)
Si
nh
est un
node handle
vide, ne fait rien et retourne l'itérateur de fin. Sinon, insère l'élément possédé par
nh
dans le conteneur, et retourne l'itérateur pointant vers l'élément avec une clé équivalente à
nh.
key
(
)
. L'élément est inséré aussi près que possible de la position juste avant
pos
. Le comportement est indéfini si
nh
n'est pas vide et
get_allocator
(
)
!
=
nh.
get_allocator
(
)
.
Aucun itérateur ou référence n'est invalidé. Si l'insertion réussit, les pointeurs et références vers l'élément obtenus pendant qu'il est détenu dans le node handle sont invalidés, et les pointeurs et références obtenus vers cet élément avant son extraction redeviennent valides. (depuis C++17)
Table des matières |
Paramètres
| pos | - | itérateur vers la position avant laquelle le nouvel élément sera inséré |
| value | - | valeur de l'élément à insérer |
| first, last | - | la paire d'itérateurs définissant la plage source des éléments à insérer |
| ilist | - | liste d'initialisation depuis laquelle insérer les valeurs |
| nh | - | un node handle compatible |
| Exigences de type | ||
-
InputIt
doit satisfaire aux exigences de
LegacyInputIterator
.
|
||
Valeur de retour
1-4)
Un itérateur vers l'élément inséré.
5,6)
(aucun)
7,8)
Itérateur de fin si
nh
était vide, itérateur pointant vers l'élément inséré sinon.
Exceptions
1-4,7,8)
Si une exception est levée par une opération quelconque, l'insertion n'a aucun effet.
5,6)
Aucune garantie de sûreté vis-à-vis des exceptions.
Complexité
1,2,7)
O(log(size()))
3,4,8)
Coût amorti constant si l'insertion se produit à la position juste avant
pos
,
O(log(size()))
sinon.
5,6)
O(N·log(size() + N))
, où
N
est le nombre d'éléments à insérer.
Exemple
|
Cette section est incomplète
Raison : aucun exemple |
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Appliqué à | Comportement publié | Comportement corrigé |
|---|---|---|---|
| LWG 233 | C++98 | pos n'était qu'une indication, pouvant être totalement ignorée |
l'insertion doit être
aussi proche que possible de la position juste avant pos |
| LWG 264 | C++98 |
la complexité de la surcharge
(5)
devait être linéaire si
l'intervalle
[first, last)
est trié selon
Compare
|
supprimé l'exigence linéaire
dans ce cas particulier |
| LWG 371 | C++98 | l'ordre des éléments équivalents n'était pas garanti d'être préservé | doit être préservé |
Voir aussi
|
(C++11)
|
construit un élément en place
(fonction membre publique) |
|
(C++11)
|
construit des éléments en place en utilisant un indice
(fonction membre publique) |
|
crée un
std::insert_iterator
dont le type est déduit de l'argument
(modèle de fonction) |