基本用法

在 C++ 中,std::vector 类的 resize 方法用于改变向量的大小。当你调用 resize(n) 时,它会将向量的大小调整为 n。如果 n 大于当前向量的大小,则新元素将被添加到向量的末尾,这些新元素会被初始化为默认值。如果 n 小于当前向量的大小,向量将被缩减,多余的元素会被丢弃。

特点和注意事项

  1. 改变大小的影响:当 resize 增加向量大小时,新添加的元素会被默认初始化。对于基本数据类型(如 intdouble 等),这意味着新元素的初始值不确定。对于类对象,将调用默认构造函数。

  2. 效率考虑:频繁调用 resize 可能影响性能,因为每次大小改变可能涉及内存分配和元素复制或销毁。

  3. 安全性:与 reserve 方法不同,resize 会改变向量的实际元素数量,而 reserve 只改变容量。

  4. 重载版本resize 还有一个重载版本 resize(n, value),可以指定新添加元素的初始值。

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <vector>

int main() {
std::vector<int> v = {1, 2, 3};

// 增加大小到 5,默认初始化新元素
v.resize(5);
for (int i : v) std::cout << i << " "; // 输出: 1 2 3 0 0
std::cout << "\n";

// 减小大小到 2,移除多余元素
v.resize(2);
for (int i : v) std::cout << i << " "; // 输出: 1 2
std::cout << "\n";

// 再次增加大小,并指定新元素的初始值为 99
v.resize(4, 99);
for (int i : v) std::cout << i << " "; // 输出: 1 2 99 99
std::cout << "\n";

return 0;
}

在这个例子中,你可以看到如何使用 resize 来增加和减少向量的大小,以及如何指定新元素的初始化值。


本站由 @anonymity 使用 Stellar 主题创建。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。