std::inplace_vector<T,N>::resize

来自cppreference.com

 
 
 
 
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 间的差成线性。

异常

如果因为任何原因抛出了异常,那么这些函数无效果(强异常安全保证)。

1,2)count > N 时抛出 std::bad_alloc

示例

#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]

参阅

[静态]
返回可容纳的最大元素数
(公开静态成员函数)
返回元素数
(公开成员函数)
[静态]
返回当前存储空间能够容纳的元素数
(公开静态成员函数)
检查容器是否为空
(公开成员函数)