std::inplace_vector<T,N>::push_back
来自cppreference.com
| |
(1) | (C++26 起) |
| |
(2) | (C++26 起) |
将给定元素 value 追加到容器末尾。
1) 新元素被初始化为
value 的副本。2)
value 被移动入新元素。除 end() 外没有迭代器或引用会失效,发生插入时 end() 失效。
参数
| value | - | 要追加元素的值 |
| 类型要求 | ||
- 为使用重载 (1), T 必须满足可复制插入 (CopyInsertable) 。
| ||
- 为使用重载 (2), T 必须满足可移动插入 (MoveInsertable) 。
|
返回值
back(),即到所插入元素的引用。
复杂度
常数。
异常
- 若调用前
size() == capacity()则抛出 std::bad_alloc。 - 所插入元素的初始化抛出的任何异常。
如果因为任何原因抛出了异常,那么这些函数无效果(强异常安全保证)。
示例
Run this code
#include <inplace_vector>
#include <new>
#include <print>
#include <string>
int main()
{
std::inplace_vector<std::string, 2> fauna;
std::string dog{"\N{DOG}"};
fauna.push_back("\N{CAT}"); // 重载 (1)
fauna.push_back(std::move(dog)); // 重载 (2)
std::println("fauna = {}", fauna);
try
{
fauna.push_back("\N{BUG}"); // throws: 空间不足
}
catch(const std::bad_alloc& ex)
{
std::println("{}", ex.what());
}
std::println("fauna = {}", fauna);
}
可能的输出:
fauna = ["🐈", "🐕"]
std::bad_alloc
fauna = ["🐈", "🐕"]
参阅
| 在容器末尾原位构造元素 (公开成员函数) | |
| 添加元素的范围到末尾 (公开成员函数) | |
| 尝试将元素添加到容器末尾 (公开成员函数) | |
| 尝试在容器末尾原位构造元素 (公开成员函数) | |
| 尝试添加元素的范围到末尾 (公开成员函数) | |
| 无条件将元素添加到容器末尾 (公开成员函数) | |
| 无条件在容器末尾原位构造元素 (公开成员函数) | |
| 移除末元素 (公开成员函数) | |
| 创建拥有从实参推出的类型的 std::back_insert_iterator (函数模板) |