Namespaces
Variants

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

Von de.cppreference.net
 
 
 
 
constexpr std::optional<reference> try_push_back( const T& value );
(1) (seit C++26)
constexpr std::optional<reference> try_push_back( T&& value );
(2) (seit C++26)

Fügt das angegebene Element bedingt value am Ende des Containers an.

Wenn size() == capacity() true ist, hat es keine Auswirkungen. Andernfalls wird ein Objekt vom Typ T angehängt:

1) Das neue Element wird als Kopie von value initialisiert.
2) value wird in das neue Element verschoben.

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

Parameter

value - der Wert des anzuhängenden Elements
Typanforderungen
-
T muss die Anforderungen von EmplaceConstructible erfüllen.

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 Exception ausgelöst wird, haben diese Funktionen keine Wirkung ( strong exception safety guarantee ).

Hinweise

Feature-Test Makro Wert Std 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 <inplace_vector>
#include <optional>
#include <string>

int main()
{
    std::inplace_vector<std::string, 2> pets;
    std::string dog{"dog"};

    std::optional<std::string&> p1 = pets.try_push_back("cat"); // overload (1)
    assert(*p1 == "cat" and pets.size() == 1);

    std::optional<std::string&> p2 = pets.try_push_back(std::move(dog)); // overload (2)
    assert(*p2 == "dog" and pets.size() == 2);

    assert(pets[0] == "cat" and pets[1] == "dog");
    assert(pets.size() == pets.capacity());

    std::optional<std::string&> p3 = pets.try_push_back("bug");
    assert(p3 == std::nullopt and pets.size() == 2);
}

Siehe auch

fügt ein Element am Ende hinzu
(öffentliche Elementfunktion)
konstruiert ein Element direkt am Ende
(öffentliche Elementfunktion)
fügt einen Bereich von Elementen am Ende hinzu
(öffentliche Elementfunktion)
versucht, ein Element direkt am Ende zu konstruieren
(ö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)