Namespaces
Variants

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

From cppreference.net
Défini dans l'en-tête <unordered_map>
iterator insert ( const value_type & value ) ;
(1) (depuis C++11)
iterator insert ( value_type && value ) ;
(2) (depuis C++17)
template < class P >
iterator insert ( P && value ) ;
(3) (depuis C++11)
iterator insert ( const_iterator hint, const value_type & value ) ;
(4) (depuis C++11)
iterator insert ( const_iterator hint, value_type && value ) ;
(5) (depuis C++17)
template < class P >
iterator insert ( const_iterator hint, P && value ) ;
(6) (depuis C++11)
template < class InputIt >
void insert ( InputIt first, InputIt last ) ;
(7) (depuis C++11)
void insert ( std:: initializer_list < value_type > ilist ) ;
(8) (depuis C++11)
iterator insert ( node_type && nh ) ;
(9) (depuis C++17)
iterator insert ( const_iterator hint, node_type && nh ) ;
(10) (depuis C++17)

Insère un ou plusieurs éléments dans le conteneur.

1-3) Insère value .
La surcharge (3) est équivalente à emplace ( std:: forward < P > ( value ) ) et ne participe à la résolution de surcharge que si std:: is_constructible < value_type, P && > :: value == true .
4-6) Insère value , en utilisant hint comme suggestion non contraignante pour l'endroit où la recherche devrait commencer.
La surcharge (6) est équivalente à emplace_hint ( hint, std:: forward < P > ( value ) ) et ne participe à la résolution de surcharge que si std:: is_constructible < value_type, P && > :: value == true .
7) Insère les éléments de la plage [ first , last ) .
Si [ first , last ) n'est pas un intervalle valide , ou si first et/ou last sont des itérateurs dans * this , le comportement est indéfini.
8) Insère des éléments depuis une liste d'initialisation ilist .
9) 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é. Le comportement est indéfini si nh n'est pas vide et get_allocator ( ) ! = nh. get_allocator ( ) .
10) 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 ( ) . hint est utilisé comme suggestion non contraignante pour indiquer où la recherche devrait commencer. Le comportement est indéfini si nh n'est pas vide et get_allocator ( ) ! = nh. get_allocator ( ) .

Si après l'opération le nouveau nombre d'éléments est supérieur à l'ancien max_load_factor() * bucket_count() un rehashing a lieu.
Si un rehashing se produit (en raison de l'insertion), tous les itérateurs sont invalidés. Sinon (aucun rehashing), les itérateurs ne sont pas invalidés. 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

hint - itérateur, utilisé comme suggestion pour l'emplacement d'insertion du contenu
value - valeur de l'élément à insérer
first, last - 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 gestionnaire de nœud compatible
Exigences de type
-
InputIt doit satisfaire aux exigences de LegacyInputIterator .

Valeur de retour

1-6) Un itérateur vers l'élément inséré.
7,8) (aucun)
9,10) Itérateur de fin si nh était vide, itérateur pointant vers l'élément inséré sinon.

Exceptions

1-6) Si une exception est levée pour quelque raison que ce soit, ces fonctions n'ont aucun effet ( strong exception safety guarantee ).
7,8) Aucune garantie de sûreté face aux exceptions.
9,10) Si une exception est levée pour quelque raison que ce soit, ces fonctions n'ont aucun effet ( strong exception safety guarantee ).

Complexité

1-6) Cas moyen : O(1) , cas le pire O(size()) .
7,8) Cas moyen : O(N) , où N est le nombre d'éléments à insérer. Cas le plus défavorable : O(N * size() + N) .
9,10) Cas moyen : O(1) , cas le plus défavorable O(size()) .

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 S'applique à Comportement publié Comportement corrigé
LWG 2005 C++11 les surcharges (3,6) ne participaient à la résolution de surcharge
que si P est implicitement convertible en value_type
ne participe que si value_type
est constructible à partir de P&&

Voir aussi

construit un élément en place
(fonction membre publique)
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
(fonction template)