std::vector::push_back
Z cppreference.com
void push_back( const T& value ); |
(1) | |
void push_back( T&& value ); |
(2) | (od C++11) |
Dodaje nowy element value na koniec kontenera.
1) Nowy element jest inicjalizowany jako kopia value.
2) value jest przenoszone do nowego elementu.
Jeśli nowy rozmiar size() jest większy niż capacity(), wszystkie iteratory i referencje zostają unieważnione (wliczając iterator zakońcowy). W przeciwnym wypadku tylko iterator zakońcowy zostaje unieważniony.
Spis treści |
[edytuj] Parametry
value | - | wartość dodawanego elementu |
Wymagania względem typów | ||
-T musi spełniać wymagania CopyInsertable aby użyć przeciążenia (1). | ||
-T musi spełniać wymagania MoveInsertable aby użyć przeciążenia (2). |
[edytuj] Zwracana wartość
(none)
[edytuj] Złożoność
Zamortyzowana stała.
[edytuj] Wyjątki
Jeśli zostanie wyrzucony wyjątek (co może nastąpić w związku z alokacją pamięci Allocator::allocate() lub konstrukcją/przypisaniem elementu za pomocą kopiowania lub przeniesienia), funkcja nie zmieni wartości kontenera (strong exception guarantee).
Jeśli konstruktor przenoszący T nie jest noexcept oraz T nie jest CopyInsertable do *this, wektor użyje konstruktora przenoszącego. Jeśli ten konstruktor wyrzuci wyjątek, gwarancja niezmienności stanu kontenera jest zniesiona, a efekty niesprecyzowane. | (od C++11) |
Notka
Niektóre implementacje wyrzucają również std::length_error, kiedy push_back spowoduje realokację, która przekroczyłaby max_size, w związku z niejawnym wywołaniem odpowiednika reserve(size()+1).
[edytuj] Przykład
#include <vector> #include <iostream> #include <iomanip> int main() { std::vector<std::string> numbers; numbers.push_back("abc"); std::string s = "def"; numbers.push_back(std::move(s)); std::cout << "vector holds: "; for (auto&& i : numbers) std::cout << std::quoted(i) << ' '; std::cout << "\nMoved-from string holds " << std::quoted(s) << '\n'; }
Wynik:
vector holds: "abc" "def" Moved-from string holds ""
[edytuj] Zobacz także
(C++11) |
konstruuje element "w miejscu" na końcu (publiczna metoda) |
usuwa ostatni element (publiczna metoda) |