std::flat_set<Key,Compare,KeyContainer>::emplace
| 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 Typvalue_type mit std::forward<Args>(args)... initialisiert, dann wird t eingefügt, als ob durchauto 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.
| Informationen zur Iterator-Invalidierung sind von hier kopiert. |
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
| Dieser Abschnitt ist unvollständig Grund: kein Beispiel |
[bearbeiten] Siehe auch
| konstruiert Elemente "in place" unter Verwendung eines Hinweises (public member function) | |
| fügt Elemente ein (public member function) |