std::vector<T,Allocator>::push_back
void push_back( const T& value ); | (1) | (constexpr с C++20) |
void push_back( T&& value ); | (2) |
(с C++11) (constexpr с C++20) |
Добавляет указанный элемент value в конец контейнера.
value.value перемещается в новый элемент.Если после операции новое значение size() больше старого значения capacity(), происходит перераспределение памяти, в результате которого все итераторы (включая итератор end()) и все ссылки на элементы становятся недействительными. В противном случае становится недействительным только итератор end().
Параметры
| value | - | значение добавляемого элемента |
| Требования к типу | ||
-T должен удовлетворять требованиям CopyInsertable, чтобы можно было использовать перегрузку (1). |
||
-T должен удовлетворять требованиям MoveInsertable, чтобы можно было использовать перегрузку (2). |
||
Сложность
Амортизированная константная.
Исключения
Если выбрасывается исключение (например, из-за Allocator::allocate() или конструктора/оператора присваивания копированием или перемещением элемента), эта функция не оказывает эффекта (строгая гарантия безопасности исключений).
| Если конструктор перемещения | (начиная с 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: ""
См. также
|
(C++11) | создаёт элемент непосредственно в конце контейнера (открытая функция-член) |
| удаляет последний элемент (открытая функция-член) |
|
создаёт std::back_insert_iterator типа, выводимого из аргумента (шаблон функции) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/container/vector/push_back