std::vector<T,Allocator>::push_back
void push_back( const T& value ); | (1) | |
void push_back( T&& value ); | (2) | (since C++11) |
Appends the given element value
to the end of the container.
value
.value
is moved into the new element.If the new size()
is greater than capacity()
then all iterators and references (including the past-the-end iterator) are invalidated. Otherwise only the past-the-end iterator is invalidated.
Parameters
value | - | the value of the element to append |
Type requirements | ||
-T must meet the requirements of CopyInsertable in order to use overload (1). |
||
-T must meet the requirements of MoveInsertable in order to use overload (2). |
Return value
(none).
Complexity
Amortized constant.
Exceptions
If an exception is thrown (which can be due to Allocator::allocate()
or element copy/move constructor/assignment), this function has no effect (strong exception guarantee).
If T 's move constructor is not noexcept and T is not CopyInsertable into *this , vector will use the throwing move constructor. If it throws, the guarantee is waived and the effects are unspecified. | (since C++11) |
Notes
Some implementations also throw std::length_error
when push_back
causes a reallocation that would exceed max_size
, due to implicitly calling an equivalent of reserve(size()+1)
.
Example
#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'; }
Output:
vector holds: "abc" "def" Moved-from string holds ""
See also
(C++11) | constructs an element in-place at the end (public member function) |
removes the last element (public member function) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
http://en.cppreference.com/w/cpp/container/vector/push_back