std::vector<T,Allocator>::push_back
| void push_back( const T& value ); |
(1) | (constexpr seit C++20) |
| void push_back( T&& value ); |
(2) | (seit C++11) (constexpr seit C++20) |
Hängt das gegebene Element value an das Ende des Containers an.
Wenn nach der Operation die neue size() größer als die alte capacity() ist, findet eine Reallokation statt. In diesem Fall werden alle Iteratoren (einschließlich des end()-Iterators) und alle Referenzen auf die Elemente ungültig. Andernfalls wird nur der end()-Iterator ungültig.
Inhalt |
[bearbeiten] Parameter
| value | - | Der Wert des anzuhängenden Elements |
| Typanforderungen | ||
-T muss die Anforderungen von CopyInsertable erfüllen, um Überladung (1) zu verwenden. | ||
-T muss die Anforderungen von MoveInsertable erfüllen, um Überladung (2) zu verwenden. | ||
[bearbeiten] Rückgabewert
(keine)
[bearbeiten] Komplexität
Amortisiert konstant.
[bearbeiten] Ausnahmen
Wenn eine Ausnahme ausgelöst wird (was aufgrund von Allocator::allocate() oder dem Kopier-/Verschiebekonstruktor/-zuweisungsoperator des Elements geschehen kann), hat diese Funktion keine Auswirkungen (starkes Ausnahme-Garantie).
|
Wenn der Move-Konstruktor von |
(seit C++11) |
Anmerkungen
Einige Implementierungen werfen std::length_error, wenn push_back eine Neuzuweisung verursacht, die max_size überschreitet (aufgrund eines impliziten Aufrufs eines Äquivalents von reserve(size() + 1)).
[bearbeiten] Beispiel
#include <iomanip> #include <iostream> #include <string> #include <vector> int main() { std::vector<std::string> letters; letters.push_back("abc"); std::string s{"def"}; letters.push_back(std::move(s)); std::cout << "std::vector letters holds: "; for (auto&& e : letters) std::cout << std::quoted(e) << ' '; std::cout << "\nMoved-from string s holds: " << std::quoted(s) << '\n'; }
Mögliche Ausgabe
std::vector letters holds: "abc" "def" Moved-from string s holds: ""
[bearbeiten] Siehe auch
| (C++11) |
konstruiert ein Element direkt (in-place) am Ende (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) |