Namensräume
Varianten
Aktionen

std::unordered_multiset<Key,Hash,KeyEqual,Allocator>::insert

Von cppreference.com
 
 
 
 
iterator einfügen( const value_type& value );
(1) (seit C++11)
iterator einfügen( value_type&& value );
(2) (seit C++11)
iterator insert( const_iterator hint, const value_type& value );
(3) (seit C++11)
iterator insert( const_iterator hint, value_type&& value );
(4) (seit C++11)
template< class InputIt >
void einfügen( InputIt first, InputIt last );
(5) (seit C++11)
void insert( std::initializer_list<value_type> ilist );
(6) (seit C++11)
iterator einfügen( node_type&& nh );
(7) (seit C++17)
iterator insert( const_iterator hint, node_type&& nh );
(8) (seit C++17)

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

1,2) Fügt value ein.
3,4) Fügt value ein, wobei hint als nicht bindender Vorschlag verwendet wird, wo die Suche beginnen soll.
5) Fügt Elemente aus dem Bereich [firstlast) ein.
6) Fügt Elemente aus der Initialisierungsliste ilist ein.
7) Wenn nh ein leerer node handle ist, tut es nichts. Andernfalls wird das von nh besessene 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().
8) Wenn nh ein leerer node handle ist, tut es nichts und gibt den End-Iterator zurück. Andernfalls wird das von nh besessene Element in den Container eingefügt, und es wird der Iterator zurückgegeben, der auf das Element mit einem Schlüssel zeigt, der äquivalent zu nh.key() ist. hint wird als nicht bindender 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 von Elementen größer ist als max_load_factor() * bucket_count(), findet ein Rehashing 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-4) Ein Iterator zum eingefügten Element.
5,6) (keine)
7,8) End-Iterator, wenn nh leer war, ansonsten Iterator, der auf das eingefügte Element zeigt.

[edit] Ausnahmen

1-4) Wenn durch eine Operation eine Ausnahme ausgelöst wird, hat die Einfügung keine Auswirkung.

[edit] Komplexität

1-4) Durchschnittlicher Fall: O(1), schlimmster Fall O(size()).
5,6) Durchschnittlicher Fall: O(N), wobei N die Anzahl der einzufügenden Elemente ist. Schlimmster Fall: O(N * size() + N).
7,8) Durchschnittlicher Fall: O(1), schlimmster Fall O(size()).

[edit] Beispiel

[edit] Siehe auch

konstruiert Elemente direkt (in-place)
(public member function) [edit]
konstruiert Elemente "in place" unter Verwendung eines Hinweises
(public member function) [edit]
erstellt einen std::insert_iterator vom Typ, der aus dem Argument abgeleitet wird
(Funktionsvorlage) [bearbeiten]