Namespaces
Variants

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

From 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 eine Kopie von value am Ende des Containers an.

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

Inhaltsverzeichnis

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)

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)