std::unordered_multimap<Key,T,Hash,KeyEqual,Allocator>::insert
Von cppreference.com
< cpp | container | unordered multimap
| Definiert in Header <unordered_map> |
||
| iterator einfügen( const value_type& value ); |
(1) | (seit C++11) |
| iterator einfügen( 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 einfügen( InputIt first, InputIt last ); |
(7) | (seit C++11) |
| void insert( std::initializer_list<value_type> ilist ); |
(8) | (seit C++11) |
| iterator einfügen( 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.
Überladung (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 und verwendet hint als unverbindlichen Vorschlag, wo die Suche beginnen soll.
Ü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, tut diese Funktion nichts. Andernfalls wird das von nh gehaltene Element in den Container eingefügt und ein Iterator, der auf das eingefügte Element zeigt, 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, tut diese Funktion nichts und gibt den End-Iterator zurück. Andernfalls wird das von nh gehaltene Element in den Container eingefügt und ein Iterator, der auf das Element mit einem zum Schlüssel von nh.key() äquivalenten Schlüssel zeigt, zurückgegeben. hint wird als unverbindlicher Vorschlag verwendet, wo die Suche beginnen soll. Das Verhalten ist undefiniert, wenn nh nicht leer ist und get_allocator() != nh.get_allocator().
Wenn nach der Operation die neue Anzahl der Elemente größer ist als max_load_factor() * bucket_count(), findet ein Re-Hashing statt.
Wenn ein Rehashing stattfindet (aufgrund der Einfügung), werden alle Iteratoren ungültig. Andernfalls (kein Rehashing) werden Iteratoren nicht ungültig. Wenn die Einfügung erfolgreich ist, sind Zeiger und Referenzen auf das Element, die erhalten wurden, während es im Node-Handle gehalten wurde, ungültig, und Zeiger und Referenzen, die auf dieses Element erhalten wurden, bevor es extrahiert wurde, werden gültig.(seit C++17)
Inhalt |
[edit] Parameter
| hint | - | iterator, der als Vorschlag dient, wo der Inhalt eingefügt werden soll |
| value | - | Elementwert, der eingefügt werden soll |
| first, last | - | das Iteratorenpaar, das den Quell- Bereich der einzufügenden Elemente definiert |
| ilist | - | Initialisierungsliste, aus der die Werte eingefügt werden sollen |
| nh | - | ein kompatibler Node Handle |
| Typanforderungen | ||
-InputIt muss die Anforderungen von LegacyInputIterator erfüllen. | ||
[edit] Rückgabewert
1-6) Ein Iterator zum eingefügten Element.
7,8) (keiner)
9,10) End-Iterator, wenn nh leer war, andernfalls ein Iterator, der auf das eingefügte Element zeigt.
[edit] Ausnahmen
1-6) Wenn aus irgendeinem Grund eine Ausnahme ausgelöst wird, haben diese Funktionen keine Auswirkungen (starke Ausnahme-Sicherheitsgarantie).
7,8) Keine Garantie für Ausnahmensicherheit.
9,10) Wenn aus irgendeinem Grund eine Ausnahme ausgelöst wird, haben diese Funktionen keine Auswirkungen (starke Ausnahme-Sicherheitsgarantie).
[edit] Komplexität
1-6) Durchschnittlicher Fall:
O(1), schlimmster Fall O(size()).7,8) Durchschnittlicher Fall:
O(N), wobei N die Anzahl der einzufügenden Elemente ist. Schlimmster Fall: O(N * size() + N).9,10) Durchschnittlicher Fall:
O(1), schlimmster Fall O(size()).[edit] Beispiel
| Dieser Abschnitt ist unvollständig Grund: kein Beispiel |
[edit] Fehlerberichte
Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| LWG 2005 | C++11 | Überladungen (3,6) nehmen nur an der Überladungsauflösung teil, wenn P implizit in value_type konvertierbar istresolution if P is implicitly convertible to value_type |
nimmt nur teil, wenn value_typekonstruierbar ist aus P&& |
[edit] Siehe auch
| konstruiert Elemente direkt (in-place) (public member function) | |
| konstruiert Elemente "in place" unter Verwendung eines Hinweises (public member function) | |
| erstellt einen std::insert_iterator vom Typ, der aus dem Argument abgeleitet wird (Funktionsvorlage) |