vector.resize() 怎么删除多余的元素
时间: 2023-09-28 19:13:32 浏览: 286
当使用 `vector.resize()` 函数缩小 vector 的大小时,超出范围的元素将被永久删除。例如,如果当前 vector 大小为 10,而你想将其大小改为 5,则可以调用 `vector.resize(5)`,这将删除 vector 中的后 5 个元素。如果你想删除 vector 中的所有元素,可以调用 `vector.clear()` 函数,它会将 vector 的大小设置为 0,从而删除所有元素。需要注意的是,如果你在删除 vector 中的元素时使用了指向这些元素的指针或引用,则需要小心处理,以避免出现未定义的行为。
相关问题
VECTOR.RESIZE
`std::vector<T>::resize()` 是 C++ 标准库中的一个成员函数,用于改变向量(vector)的大小。这个操作会调整向量的实际容量,但不会移动已存储的数据。下面是 `resize()` 函数的一些关键点:
1. **增加大小**:
```cpp
std::vector<int> myvector;
// ...
myvector.resize(12);
```
这将把 `myvector` 的大小扩展到 12,如果新的大小大于当前大小,新分配的空间将被初始化为默认值(对于 `int` 类型通常是零)。
2. **减少大小**:
```cpp
myvector.resize(5);
```
如果新的大小小于当前大小,超出部分的元素会被清除。如引用[2]所示,`v1.resize(3)` 会删除 `v1` 中的最后一个元素,使其大小变为 3。
3. **指定初始值**:
```cpp
myvector.resize(8, 100);
```
可以在调整大小的同时设置新分配空间内的值。这里将向量的前8个元素设为 100。
4. **错误处理**:
调整大小时如果发生内存不足的情况,会抛出 `std::bad_alloc` 异常。
使用 `resize()` 前,请确保对可能的行为有清晰的理解,特别是当减小大小时可能会丢失数据。
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 时应该谨慎考虑性能开销。
阅读全文