Namespaces
Variants

std::multiset<Key,Compare,Allocator>:: insert

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

Fügt Element(e) in den Container ein. Die Reihenfolge der verbleibenden äquivalenten Elemente bleibt erhalten.

1,2) Fügt value ein. Wenn der Container Elemente mit äquivalentem Schlüssel enthält, wird an der oberen Grenze dieses Bereichs eingefügt.
3,4) Fügt value an einer Position ein, die so nah wie möglich an der Position direkt vor pos liegt.
5) Fügt Elemente aus dem Bereich [ first , last ) ein.
6) Fügt Elemente aus der Initialisierungsliste ilist ein.
7) 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. Falls ein Bereich mit Elementen, deren Schlüssel äquivalent zu nh. key ( ) sind, im Container existiert, wird das Element am Ende dieses Bereichs eingefügt. Das Verhalten ist undefiniert, wenn nh nicht leer ist und get_allocator ( ) ! = nh. get_allocator ( ) .
8) Wenn nh ein leerer node handle ist, macht es nichts und gibt den End-Iterator zurück. Andernfalls fügt es das von nh verwaltete Element in den Container ein und gibt den Iterator zurück, der auf das Element mit dem Schlüssel verweist, der äquivalent zu nh. key ( ) ist. Das Element wird so nah wie möglich an der Position direkt vor pos eingefügt. Das Verhalten ist undefiniert, wenn nh nicht leer ist und get_allocator ( ) ! = nh. get_allocator ( ) .

Keine Iteratoren oder Referenzen werden 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

pos - Iterator auf die Position, vor der das neue Element eingefügt wird
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-4) Ein Iterator auf das eingefügte Element.
5,6) (keine)
7,8) Enditerator, falls nh leer war, ansonsten Iterator, der auf das eingefügte Element zeigt.

Ausnahmen

1-4,7,8) Wenn eine Ausnahme durch eine beliebige Operation ausgelöst wird, hat die Einfügung keine Auswirkung.
5,6) Keine Ausnahmesicherheitsgarantie.

Komplexität

1,2,7) O(log(size()))
3,4,8) Amortisiert konstant, wenn die Einfügung an der Position unmittelbar vor pos erfolgt, O(log(size())) andernfalls.
5,6) O(N·log(size() + N)) , wobei N die Anzahl der einzufügenden Elemente ist.

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 233 C++98 pos war nur ein Hinweis, konnte komplett ignoriert werden Das Einfügen muss so nah wie möglich
an der Position direkt vor pos erfolgen
LWG 264 C++98 Die Komplexität der Überladung (5) musste linear sein, wenn
der Bereich [first, last) gemäß Compare sortiert war
Die lineare Anforderung wurde
in diesem Spezialfall entfernt
LWG 371 C++98 Die Reihenfolge äquivalenter Elemente war nicht garantiert Muss beibehalten werden

Siehe auch

(C++11)
Konstruiert Element direkt an Ort und Stelle
(öffentliche Elementfunktion)
Konstruiert Elemente direkt an Ort und Stelle mit Hinweis
(öffentliche Elementfunktion)
erstellt einen std::insert_iterator vom aus dem Argument abgeleiteten Typ
(Funktionstemplate)