Namespaces
Variants

std::vector<T,Allocator>:: push_back

From cppreference.net

void push_back ( const T & value ) ;
(1) (constexpr начиная с C++20)
void push_back ( T && value ) ;
(2) (начиная с C++11)
(constexpr начиная с C++20)

Добавляет копию value в конец контейнера.

Если после операции новый size() превышает старый capacity() , происходит перераспределение памяти, в этом случае все итераторы (включая итератор end() ) и все ссылки на элементы становятся недействительными. В противном случае недействительным становится только итератор end() .

Содержание

Параметры

value - значение элемента для добавления

Требования к типам
-
Если выполняется следующее условие, поведение не определено:
1) T не является CopyInsertable для vector .
2) T не является MoveInsertable для vector .
(начиная с C++11)

Сложность

Амортизированная константа.

Исключения

Если возникает исключение (что может произойти из-за Allocator::allocate() или конструктора/оператора присваивания копирования/перемещения элемента), эта функция не имеет эффекта ( строгая гарантия безопасности исключений ).

Если перемещающий конструктор T не является noexcept и T не является CopyInsertable в * this , vector будет использовать выбрасывающий перемещающий конструктор. Если он выбрасывает исключение, гарантии снимаются и эффекты не определены.

(начиная с C++11)

Примечания

Некоторые реализации выбрасывают std::length_error когда push_back вызывает перераспределение памяти, превышающее max_size (из-за неявного вызова эквивалента reserve ( size () + 1)) .

Пример

#include <iomanip>
#include <iostream>
#include <string>
#include <vector>
int main()
{
    std::vector<std::string> letters;
    letters.push_back("abc");
    std::string s{"def"};
    letters.push_back(std::move(s));
    std::cout << "std::vector letters holds: ";
    for (auto&& e : letters)
        std::cout << std::quoted(e) << ' ';
    std::cout << "\nMoved-from string s holds: " << std::quoted(s) << '\n';
}

Возможный вывод:

std::vector letters holds: "abc" "def"
Moved-from string s holds: ""

Смотрите также

создаёт элемент на месте в конце
(публичная функция-член)
удаляет последний элемент
(публичная функция-член)
создаёт std::back_insert_iterator типа, выведенного из аргумента
(шаблон функции)