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.
Invalidation
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
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.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
Main.cpp
#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';
}
Output
vector holds: "abc" "def"
Moved-from string holds ""
This article originates from this CppReference page. It was likely altered for improvements or editors' preference. Click "Edit this page" to see all changes made to this document.
Hover to see the original license.
Hover to see the original license.