std::vector push_back() method
- since C++20
- since C++11
- until C++11
// (1) Non const version only
constexpr void push_back( T const& value );
// (2) Non const verison only
constexpr void push_back( T&& value );
// (1) Non const version only
void push_back( T const& value );
// (2) Non const version only
void push_back( T&& value );
// (1) Non const version only
void push_back( T const& value );
Appends the given element value to the end of the container.
- (1) The new element is initialized as a copy of value.
- (2) 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
is the container's element type in this list.
- (1) -
T
must meet the requirements ofCopyInsertable
. - (2) -
T
must meet the requirements ofMoveInsertable
.
Return value
(none)
Complexity
Amortized constant - O(1).
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).
- since C++11
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.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> letters;
letters.push_back("abc");
std::string s = "def";
letters.push_back(std::move(s));
std::cout << "vector holds: ";
for (auto&& i : letters) std::cout << std::quoted(i) << ' ';
std::cout << "\nMoved-from string holds " << std::quoted(s) << '\n';
}
vector holds: "abc" "def"
Moved-from string holds ""
Hover to see the original license.