Namespaces
Variants

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

From cppreference.net
Definiert im Header <unordered_map>
iterator insert ( const value_type & value ) ;
(1) (seit C++11)
iterator insert ( value_type && value ) ;
(2) (seit C++17)
template < class P >
iterator insert ( P && value ) ;
(3) (seit C++11)
iterator insert ( const_iterator hint, const value_type & value ) ;
(4) (seit C++11)
iterator insert ( const_iterator hint, value_type && value ) ;
(5) (seit C++17)
template < class P >
iterator insert ( const_iterator hint, P && value ) ;
(6) (seit C++11)
template < class InputIt >
void insert ( InputIt first, InputIt last ) ;
(7) (seit C++11)
void insert ( std:: initializer_list < value_type > ilist ) ;
(8) (seit C++11)
iterator insert ( node_type && nh ) ;
(9) (seit C++17)
iterator insert ( const_iterator hint, node_type && nh ) ;
(10) (seit C++17)

Fügt Element(e) in den Container ein.

1-3) Fügt value ein.
Overload (3) ist äquivalent zu emplace ( std:: forward < P > ( value ) ) und nimmt nur an der Überladungsauflösung teil, wenn std:: is_constructible < value_type, P && > :: value == true .
4-6) Fügt value ein, wobei hint als nicht bindende Empfehlung verwendet wird, wo die Suche beginnen sollte.
Überladung (6) ist äquivalent zu emplace_hint ( hint, std:: forward < P > ( value ) ) und nimmt nur an der Überladungsauflösung teil, wenn std:: is_constructible < value_type, P && > :: value == true .
7) Fügt Elemente aus dem Bereich [ first , last ) ein.
Wenn [ first , last ) kein gültiger Bereich ist, oder first und/oder last Iteratoren in * this sind, ist das Verhalten undefiniert.
8) Fügt Elemente aus der Initialisierungsliste ilist ein.
9) Wenn nh ein leerer node handle ist, erfolgt keine Aktion. Andernfalls wird das von nh verwaltete Element in den Container eingefügt und ein Iterator auf das eingefügte Element zurückgegeben. Das Verhalten ist undefiniert, wenn nh nicht leer ist und get_allocator ( ) ! = nh. get_allocator ( ) .
10) Wenn nh ein leerer node handle ist, macht nichts und gibt den End-Iterator zurück. Andernfalls fügt das von nh verwaltete Element in den Container ein und gibt den Iterator zurück, der auf das Element mit dem Schlüssel zeigt, der äquivalent zu nh. key ( ) ist. hint wird als nicht bindende Empfehlung verwendet, wo die Suche beginnen sollte. Das Verhalten ist undefiniert, wenn nh nicht leer ist und get_allocator ( ) ! = nh. get_allocator ( ) .

Falls nach der Operation die neue Anzahl der Elemente größer ist als das alte max_load_factor() * bucket_count() findet eine Rehash-Operation statt.
Falls Rehashing auftritt (durch die Einfügung), werden alle Iteratoren ungültig. Andernfalls (kein Rehashing) werden Iteratoren nicht ungültig. Wenn die Einfügung erfolgreich ist, werden Zeiger und Referenzen auf das Element, die während es im Node-Handle gehalten wurde, ungültig, und Zeiger und Referenzen, die vor dem Extrahieren auf dieses Element erhalten wurden, werden gültig. (seit C++17)

Inhaltsverzeichnis

Parameter

hint - Iterator, der als Vorschlag dient, wo der Inhalt eingefügt werden soll
value - einzufügender Elementwert
first, last - das Iteratorpaar, das den Quell- Bereich der einzufügenden Elemente definiert
ilist - Initialisierungsliste, aus der die Werte eingefügt werden
nh - ein kompatibles Node Handle
Typanforderungen
-
InputIt muss die Anforderungen von LegacyInputIterator erfüllen.

Rückgabewert

1-6) Ein Iterator auf das eingefügte Element.
7,8) (keine)
9,10) End-Iterator falls nh leer war, ansonsten Iterator, der auf das eingefügte Element zeigt.

Exceptions

1-6) Wenn aus irgendeinem Grund eine Exception ausgelöst wird, haben diese Funktionen keine Wirkung ( strong exception safety guarantee ).
7,8) Keine Ausnahmesicherheitsgarantie.
9,10) Wenn aus irgendeinem Grund eine Exception ausgelöst wird, haben diese Funktionen keine Wirkung ( strong exception safety guarantee ).

Komplexität

1-6) Durchschnittlicher Fall: O(1) , schlechtester Fall O(size()) .
7,8) Durchschnittlicher Fall: O(N) , wobei N die Anzahl der einzufügenden Elemente ist. Schlechtester Fall: O(N * size() + N) .
9,10) Durchschnittlicher Fall: O(1) , schlechtester Fall O(size()) .

Beispiel

Fehlerberichte

Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR Angewendet auf Verhalten wie veröffentlicht Korrektes Verhalten
LWG 2005 C++11 Überladungen (3,6) würden nur an der Überladungsauflösung
teilnehmen, wenn P implizit in value_type konvertierbar ist
nimmt nur teil, wenn value_type
konstruierbar ist aus P&&

Siehe auch

Konstruiert Element direkt vor Ort
(öffentliche Elementfunktion)
Konstruiert Elemente direkt vor Ort mit Hinweis
(öffentliche Elementfunktion)
erstellt einen std::insert_iterator vom vom Argument abgeleiteten Typ
(Funktionstemplate)