Namespaces
Variants

std::inplace_vector<T,N>::emplace_back

Von de.cppreference.net
 
 
 
 
template< class... Args >
constexpr reference emplace_back( Args&&... args );
(seit C++26)

Hängt ein neues Element am Ende des Containers an. In der Regel wird das Element mittels placement-new erstellt, um es direkt an der vom Container bereitgestellten Stelle zu konstruieren. Die Argumente args... werden als std::forward<Args>(args)... an den Konstruktor weitergegeben.

Es werden keine Iteratoren oder Referenzen ungültig, außer end(), welche(r) ungültig wird, wenn die Einfügung erfolgt.

Parameter

args - Argumente, die an den Konstruktor des Elements weitergeleitet werden
Typanforderungen
-
T muss die Anforderungen von EmplaceConstructible erfüllen.

Rückgabewert

back() , d.h. eine Referenz auf das eingefügte Element.

Komplexität

Konstante.

Ausnahmen

  • std::bad_alloc falls size ( ) == capacity ( ) vor dem Aufruf zutrifft.
  • Jede Ausnahme, die durch die Initialisierung des eingefügten Elements ausgelöst wird.

Wenn aus irgendeinem Grund eine Exception ausgelöst wird, haben diese Funktionen keine Wirkung ( strong exception safety guarantee ).

Beispiel

#include <inplace_vector>
#include <new>
#include <print>
#include <string>
#include <utility>
int main()
{
    std::inplace_vector<std::pair<std::string, std::string>, 2> fauna;
    std::string dog{"\N{DOG}"};
    fauna.emplace_back("\N{CAT}", dog);
    fauna.emplace_back("\N{CAT}", std::move(dog));
    std::println("fauna = {}", fauna);
    try
    {
        fauna.emplace_back("\N{BUG}", "\N{BUG}"); // wirft Exception: kein Platz vorhanden
    }
    catch(const std::bad_alloc& ex)
    {
        std::println("{}", ex.what());
    }
    std::println("fauna = {}", fauna);
}

Mögliche Ausgabe:

fauna = [("🐈", "🐕"), ("🐈", "🐕")]
std::bad_alloc
fauna = [("🐈", "🐕"), ("🐈", "🐕")]

Siehe auch

fügt eine Reihe von Elementen am Ende hinzu
(öffentliche Elementfunktion)
fügt ein Element am Ende hinzu
(öffentliche Elementfunktion)
versucht, ein Element am Ende hinzuzufügen
(öffentliche Elementfunktion)
versucht, ein Element direkt am Ende zu konstruieren
(öffentliche Elementfunktion)
versucht, eine Reihe von Elementen am Ende hinzuzufügen
(öffentliche Elementfunktion)
fügt bedingungslos ein Element am Ende hinzu
(öffentliche Elementfunktion)
konstruiert bedingungslos ein Element direkt am Ende
(öffentliche Elementfunktion)
entfernt das letzte Element
(öffentliche Elementfunktion)
erstellt einen std::back_insert_iterator vom aus dem Argument abgeleiteten Typ
(Funktionstemplate)