std::list<T,Allocator>:: resize
From cppreference.net
|
void
resize
(
size_type count
)
;
|
(1) | (自 C++26 起为 constexpr) |
|
void
resize
(
size_type count,
const
value_type
&
value
)
;
|
(2) | (自 C++26 起为 constexpr) |
将容器大小调整为包含 count 个元素:
- 如果 count 等于当前大小,则不执行任何操作。
- 如果当前大小大于 count ,容器将被缩减至前 count 个元素。
- 如果当前大小小于 count ,则:
2)
额外的
value
副本被追加。
目录 |
参数
| count | - | 容器的新大小 | ||
| value | - | 用于初始化新元素的值 | ||
| 类型要求 | ||||
-
|
||||
复杂度
与当前大小和 count 之间的差值呈线性关系。
注释
如果在重载
(
1
)
中的值初始化不可取,例如当元素为非类类型且不需要清零时,可以通过提供
自定义的
Allocator::construct
来避免这种情况。
示例
运行此代码
#include <list> #include <iostream> void print(auto rem, const std::list<int>& c) { for (std::cout << rem; const int el : c) std::cout << el << ' '; std::cout << '\n'; } int main() { std::list<int> c = {1, 2, 3}; print("The list holds: ", c); c.resize(5); print("After resize up to 5: ", c); c.resize(2); print("After resize down to 2: ", c); c.resize(6, 4); print("After resize up to 6 (initializer = 4): ", c); }
输出:
The list holds: 1 2 3 After resize up to 5: 1 2 3 0 0 After resize down to 2: 1 2 After resize up to 6 (initializer = 4): 1 2 4 4 4 4
缺陷报告
以下行为变更缺陷报告被追溯应用于先前发布的C++标准。
| 缺陷报告 | 适用标准 | 发布时行为 | 正确行为 |
|---|---|---|---|
| LWG 132 | C++98 | 使用随机访问迭代器确定擦除范围 | 使用双向迭代器 |
| LWG 679 | C++98 |
resize()
按值传递
value
|
按常量引用传递 |
| LWG 1420 | C++98 | 未指定 resize ( size ( ) ) 的行为 | 已明确规范 |
参见
|
返回可容纳的最大元素数
(公开成员函数) |
|
|
返回元素数量
(公开成员函数) |
|
|
检查容器是否为空
(公开成员函数) |