Namensräume
Varianten
Aktionen

std::flat_set<Key,Compare,KeyContainer>::emplace

Von cppreference.com
< cpp‎ | container‎ | flat set
 
 
 
 
template< class... Args >
std::pair<iterator, bool> emplace( Args&&... args );
(seit C++23)

Fügt ein neues Element in den Container ein, das mit den gegebenen args direkt konstruiert wird, falls kein Element mit diesem Schlüssel im Container vorhanden ist.

Zuerst wird ein Objekt t vom Typ value_type mit std::forward<Args>(args)... initialisiert, dann wird t eingefügt, als ob durch
auto it = ranges::upper_bound(c, t, compare);
c.insert(it, std::move(t));

Diese Überladung nimmt an der Überladungsauflösung teil, nur wenn std::is_constructible_v<value_type, Args...> true ist.

Eine sorgfältige Verwendung von emplace ermöglicht die Konstruktion des neuen Elements unter Vermeidung unnötiger Kopier- oder Verschiebungsoperationen.

Inhalt

[bearbeiten] Parameter

args - Argumente, die an den Konstruktor des Elements weitergeleitet werden

[bearbeiten] Rückgabewert

Ein Paar, das aus einem Iterator zu dem eingefügten Element (oder zu dem Element, das die Einfügung verhindert hat) und einem bool-Wert besteht, der genau dann true ist, wenn die Einfügung stattgefunden hat.

[bearbeiten] Ausnahmen

Wenn aus irgendeinem Grund eine Ausnahme ausgelöst wird, hat diese Funktion keine Auswirkungen (starkes Ausnahmesicherheitsgarantie).

[bearbeiten] Komplexität

Logarithmisch zur Größe des Containers.

[bearbeiten] Beispiel

[bearbeiten] Siehe auch

konstruiert Elemente "in place" unter Verwendung eines Hinweises
(public member function) [edit]
fügt Elemente ein
(public member function) [edit]