Namensräume
Varianten
Aktionen

std::multiset<Key,Compare,Allocator>::einfügen

Von cppreference.com
< cpp‎ | container‎ | multiset
 
 
 
 
iterator einfügen( const value_type& value );
(1)
iterator einfügen( value_type&& value );
(2) (seit C++11)
(3)
iterator einfügen( 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 einfügen( InputIt first, InputIt last );
(5)
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 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 einem äquivalenten Schlüssel hat, wird am oberen Ende dieses Bereichs eingefügt.
3,4) Fügt value an einer Position ein, die der Position unmittelbar vor pos so nahe wie möglich kommt.
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, tut dies nichts. Andernfalls wird das von nh gehaltene Element in den Container eingefügt und ein Iterator zurückgegeben, der auf das eingefügte Element zeigt. Wenn ein Bereich mit Elementen existiert, deren Schlüssel mit nh.key() äquivalent sind, 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, tut dies nichts und gibt den End-Iterator zurück. Andernfalls wird das von nh gehaltene Element in den Container eingefügt, und es wird der Iterator zurückgegeben, der auf das Element mit einem Schlüssel zeigt, der zu nh.key() äquivalent ist. Das Element wird so nah wie möglich an die Position unmittelbar 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 erhalten wurden, während es im Node Handle gehalten wurde, ungültig, und Zeiger und Referenzen auf dieses Element, die vor der Extraktion erhalten wurden, werden gültig.(seit C++17)

Inhalt

[edit] Parameter

pos - Iterator zu der Position, vor der das neue Element eingefügt wird
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, Iterator, der auf das eingefügte Element zeigt, andernfalls.

[edit] Ausnahmen

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

[edit] Komplexität

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

[edit] 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 233 C++98 pos war nur ein Hinweis, er konnte komplett ignoriert werden die Einfügung musste
so nah wie möglich an der
Position direkt vor pos erfolgen
LWG 264 C++98 die Komplexität der Überladung (5) sollte linear sein, wenn
der Bereich [first, last) ist gemäß Compare sortiert
die lineare Anforderung entfernt
in diesem Sonderfall
LWG 371 C++98 die Reihenfolge äquivalenter Elemente war nicht garantiert erhalten zu bleiben musste erhalten bleiben

[edit] Siehe auch

(C++11)
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]