std::inplace_vector<T,N>::try_push_back
Von cppreference.com
< cpp | container | inplace vector
| constexpr pointer try_push_back( const T& value ); |
(1) | (seit C++26) |
| constexpr pointer try_push_back( T&& value ); |
(2) | (seit C++26) |
Hängt das gegebene Element value bedingt an das Ende des Containers an.
Wenn size() == capacity() true ist, hat dies 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(), welche ungültig wird, wenn die Einfügung stattfindet.
Inhalt |
[edit] Parameter
| value | - | Der Wert des anzuhängenden Elements |
| Typanforderungen | ||
-T muss die Anforderungen von EmplaceConstructible erfüllen. | ||
[edit] Rückgabewert
std::addressof(back()), wenn size() < capacity(), nullptr andernfalls.
[edit] Komplexität
Konstant.
[edit] Ausnahmen
Jede Ausnahme, die bei der Initialisierung eines eingefügten Elements ausgelöst wird.
Wenn aus irgendeinem Grund eine Ausnahme ausgelöst wird, haben diese Funktionen keine Auswirkungen (starke Ausnahme-Sicherheitsgarantie).
[edit] Hinweise
| Dieser Abschnitt ist unvollständig Grund: Erklären Sie den Zweck dieser API. |
[edit] Beispiel
Führen Sie diesen Code aus
#include <cassert> #include <inplace_vector> #include <string> int main() { std::inplace_vector<std::string, 2> pets; std::string dog{"dog"}; std::string* p1 = pets.try_push_back("cat"); // overload (1) assert(*p1 == "cat" and pets.size() == 1); 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::string* p3 = pets.try_push_back("bug"); assert(p3 == nullptr and pets.size() == 2); }
[edit] Siehe auch
| fügt ein Element am Ende hinzu (public member function) | |
| konstruiert ein Element direkt (in-place) am Ende (public member function) | |
| fügt einen Bereich von Elementen am Ende hinzu (public member function) | |
| versucht, ein Element inplace am Ende zu konstruieren (public member function) | |
| versucht, einen Bereich von Elementen am Ende hinzuzufügen (public member function) | |
| konstruiert bedingungslos ein Element inplace am Ende (public member function) | |
| fügt bedingungslos ein Element am Ende hinzu (public member function) | |
| entfernt das letzte Element (public member function) | |
| erstellt einen std::back_insert_iterator vom Typ, der aus dem Argument abgeleitet wird (Funktionsvorlage) |