std::inplace_vector<T,N>::resize
来自cppreference.com
< cpp | container | inplace vector
constexpr void resize( size_type count ); |
(1) | (C++26 起) |
constexpr void resize( size_type count, const value_type& value ); |
(2) | (C++26 起) |
重设容器大小以容纳 count 个元素,在 count == size() 时不做任何事。
如果当前大小大于 count,那么减小容器到它的前 count 个元素。
如果当前大小小于 count,
1) 追加额外的默认插入的元素
2) 追加额外的 value 的副本
参数
count | - | 容器的大小 |
value | - | 用以初始化新元素的值 |
类型要求 | ||
- 为使用重载 (1), T 必须满足可默认插入 (DefaultInsertable) 。
| ||
- 为使用重载 (2), T 必须满足可复制插入 (CopyInsertable) 。
|
返回值
(无)
复杂度
与当前大小和 count 间的差成线性。
异常
如果因为任何原因抛出了异常,那么这些函数无效果(强异常安全保证)。
示例
运行此代码
#include <inplace_vector> #include <print> int main() { std::inplace_vector<int, 6> v(6, 9); std::println("起初, v = {}", v); v.resize(2); std::println("resize(2) 后, v = {}", v); v.resize(4); std::println("resize(4) 后, v = {}", v); v.resize(6, -1); std::println("resize(6, -1) 后, v = {}", v); try { std::print("尝试 resize(13): "); v.resize(13); // 抛出异常,因为 count > N;v 不被改动 } catch(const std::bad_alloc& ex) { std::println("ex.what(): {}", ex.what()); } std::println("发生异常后, v = {}", v); }
可能的输出:
起初, v = [9, 9, 9, 9, 9, 9] resize(2) 后, v = [9, 9] resize(4) 后, v = [9, 9, 0, 0] resize(6, -1) 后, v = [9, 9, 0, 0, -1, -1] 参数 resize(13): ex.what(): std::bad_alloc 发生异常后, v = [9, 9, 0, 0, -1, -1]
参阅
[静态] |
返回可容纳的最大元素数 (公开静态成员函数) |
返回元素数 (公开成员函数) | |
[静态] |
返回当前存储空间能够容纳的元素数 (公开静态成员函数) |
检查容器是否为空 (公开成员函数) |