Namespaces
Variants

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

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

Fügt bedingt ein Objekt vom Typ T am Ende des Containers hinzu.

Falls size() == capacity() true ist, hat keine Auswirkungen. Andernfalls wird ein mit std::forward<Args>(args)... direkt-nicht-Listen-initialisiertes Objekt vom Typ T hinzugefügt.

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

Parameter

args - Argumente, die an den Konstruktor des Elements weitergeleitet werden
Typanforderungen
-
T muss EmplaceConstructible in inplace_vector aus std:: forward < Args > ( args ) ... sein.

Rückgabewert

std:: addressof ( back ( ) ) wenn size ( ) < capacity ( ) , nullptr andernfalls.

Komplexität

Konstante.

Ausnahmen

Jede Ausnahme, die durch die Initialisierung des eingefügten Elements ausgelöst wird. Wenn aus irgendeinem Grund eine Ausnahme ausgelöst wird, hat diese Funktion keine Auswirkung ( strong exception safety guarantee ).

Anmerkungen

Feature-Test Makro Wert Standard Feature
__cpp_lib_inplace_vector 202603L (C++26) Besserer Rückgabetyp (std::optional<reference> statt pointer) für try_push_back und try_emplace_back

Beispiel

#include <cassert>
#include <complex>
#include <inplace_vector>
#include <optional>

int main()
{
    using namespace std::complex_literals;
    using C = std::complex<double>;
    using I = std::inplace_vector<C, 3>;
    auto v = I{1.0 + 2.0i, 3.0 + 4.0i};

    std::optional<C&> c = v.try_emplace_back(5.0, 6.0);
    assert(*c == 5.0 + 6.0i);
    assert((v == I{1.0 + 2.0i, 3.0 + 4.0i, 5.0 + 6.0i}));

    c = v.try_emplace_back(7.0, 8.0); // no space => no insertion
    assert(c == std::nullopt);
    assert((v == I{1.0 + 2.0i, 3.0 + 4.0i, 5.0 + 6.0i}));
}

Siehe auch

Konstruiert ein Element direkt am Ende
(öffentliche Elementfunktion)
Fügt ein Element am Ende hinzu
(öffentliche Elementfunktion)
Fügt einen Bereich von Elementen am Ende hinzu
(öffentliche Elementfunktion)
Versucht, einen Bereich von Elementen am Ende hinzuzufügen
(öffentliche Elementfunktion)
Konstruiert bedingungslos ein Element direkt am Ende
(öffentliche Elementfunktion)
Fügt bedingungslos ein Element am Ende hinzu
(öffentliche Elementfunktion)
Entfernt das letzte Element
(öffentliche Elementfunktion)
Erstellt einen std::back_insert_iterator vom aus dem Argument abgeleiteten Typ
(Funktionstemplate)