vector.resize
时间: 2023-10-11 12:07:18 浏览: 49
vector.resize 是 C++ 中用于调整 vector 容器大小的函数。它接受一个参数,表示调整后的容器大小。
如果 resize 的大小小于当前容器的大小,函数会删去多余的元素。如果 resize 的大小大于当前容器的大小,函数会在末尾添加默认构造的元素。
例如,假设有一个 vector 容器 v,其当前大小为 5,我们可以通过以下方式调整容器的大小:
```cpp
#include <vector>
int main() {
std::vector<int> v(5); // 初始化一个大小为 5 的 vector 容器
v.resize(3); // 调整容器大小为 3
// 此时 v 中只有前 3 个元素保留,后面的两个元素会被删除
v.resize(7); // 调整容器大小为 7
// 此时 v 的大小为 7,新增的后面两个元素会被默认构造
return 0;
}
```
需要注意的是,resize 会修改容器的大小,并可能导致容器内部的元素重新分配内存空间。所以在使用 resize 时应该谨慎考虑性能开销。
相关问题
c++ vector.resize
C++的vector类提供了多种重载的resize()函数来改变向量的大小。根据引用,resize()函数有两种版本:
1. `void resize(size_type n)`:此版本将向量的大小改变为n。如果n小于当前向量的大小,则会截断超出n的元素。如果n大于当前向量的大小,则会在末尾插入默认构造的元素。这种版本不会为新元素赋值。
2. `void resize(size_type n, const value_type& val)`:此版本将向量的大小改变为n。如果n小于当前向量的大小,则会截断超出n的元素。如果n大于当前向量的大小,则会在末尾插入val值的元素。这种版本会为新元素赋值为val。
根据引用,还有另一种版本:
3. `void resize(size_type n, value_type val = value_type())`:此版本与第二种版本相同,但是在没有提供val参数时,默认使用元素类型的默认构造函数来为新元素赋值。
所以,c vector.resize(n)将改变向量的大小为n,不会为新元素赋值;c vector.resize(n, val)将改变向量的大小为n,并将新元素赋值为val;c vector.resize(n, val)将改变向量的大小为n,并将新元素赋值为val(如果未提供val,则使用元素类型的默认构造函数来赋值)。
vector.resize()
`vector.resize()`是C++标准库中`std::vector`类的一个成员函数,用于调整向量的大小。它接受一个整数参数,表示向量应该具有的新大小。
当新大小大于当前大小时,`resize()`将在向量末尾添加新元素,这些元素将使用默认构造函数进行初始化。如果需要,可以提供一个值作为第二个参数,以用于初始化新增元素。
当新大小小于当前大小时,`resize()`将删除向量末尾的元素,使其与新大小相匹配。
下面是一个示例:
```cpp
#include <iostream>
#include <vector>
int main() {
std::vector<int> numbers;
// 增加向量大小为5,并用0进行初始化
numbers.resize(5, 0);
// 输出向量的元素
for (const auto& number : numbers) {
std::cout << number << " ";
}
std::cout << std::endl;
// 减小向量大小为3
numbers.resize(3);
// 输出调整后的向量元素
for (const auto& number : numbers) {
std::cout << number << " ";
}
std::cout << std::endl;
return 0;
}
```
输出:
```
0 0 0 0 0
0 0 0
```
在这个示例中,我们使用`resize()`函数来增加和减小向量的大小,并用指定的初始值进行初始化。