vector.resize() 怎么删除多余的元素
时间: 2023-09-28 13:13:32 浏览: 99
当使用 `vector.resize()` 函数缩小 vector 的大小时,超出范围的元素将被永久删除。例如,如果当前 vector 大小为 10,而你想将其大小改为 5,则可以调用 `vector.resize(5)`,这将删除 vector 中的后 5 个元素。如果你想删除 vector 中的所有元素,可以调用 `vector.clear()` 函数,它会将 vector 的大小设置为 0,从而删除所有元素。需要注意的是,如果你在删除 vector 中的元素时使用了指向这些元素的指针或引用,则需要小心处理,以避免出现未定义的行为。
相关问题
vector.resize
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,则使用元素类型的默认构造函数来赋值)。