Skip to main content

std::vector push_back() method

// (1) Non const version only
constexpr void push_back( T const& value );

// (2) Non const verison only
constexpr void push_back( T&& 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.

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).

If Ts 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.

std::vector push_back() method

// (1) Non const version only
constexpr void push_back( T const& value );

// (2) Non const verison only
constexpr void push_back( T&& 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.

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).

If Ts 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.