Namespaces
Variants

std::vector<T,Allocator>::push_back

Von de.cppreference.net

 
 
 
 
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 angegebene Element value an das Ende des Containers an.

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

Falls nach der Operation die neue size() größer als die alte capacity() ist, findet eine Neubelegung statt, in welchem Fall alle Iteratoren (einschließlich des end()-Iterators) und alle Referenzen auf die Elemente ungültig werden. Andernfalls wird nur der end()-Iterator ungültig.

Parameter

value - der Wert des anzuhängenden Elements

Typanforderungen
-
Wenn die folgende Bedingung erfüllt ist, ist das Verhalten undefiniert:
1) T ist nicht CopyInsertable in vector .
2) T ist nicht MoveInsertable in vector .
(seit C++11)

Rückgabewert

(kein)

Komplexität

Amortisiert konstant.

Ausnahmen

Wenn eine Exception ausgelöst wird (was aufgrund von Allocator::allocate() oder Element-Kopier-/Verschiebekonstruktor/-zuweisung geschehen kann), hat diese Funktion keine Wirkung ( starke Exception-Garantie ).

Wenn der Move-Konstruktor von T nicht noexcept ist und T nicht CopyInsertable in * this ist, verwendet vector den werfenden Move-Konstruktor. Wenn dieser eine Exception wirft, ist die Garantie aufgehoben und die Effekte sind nicht spezifiziert.

(seit C++11)

Hinweise

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)) .

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: ""

Siehe auch

Konstruiert ein Element direkt am Ende
(öffentliche Elementfunktion)
entfernt das letzte Element
(öffentliche Elementfunktion)
erstellt einen std::back_insert_iterator vom vom Argument abgeleiteten Typ
(Funktionstemplate)