vector.resize(-1)
时间: 2024-06-15 19:04:59 浏览: 157
vector.resize(-1)是一个错误的用法。在C++中,vector.resize()函数用于改变vector的大小。它接受一个参数,表示vector的新大小。如果新大小小于当前大小,则vector会被截断为新大小。如果新大小大于当前大小,则vector会扩展并填充默认值。
然而,当参数为负数时,resize()函数会引发一个std::length_error异常。因此,vector.resize(-1)是不合法的。
相关问题
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 时应该谨慎考虑性能开销。
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()` 前,请确保对可能的行为有清晰的理解,特别是当减小大小时可能会丢失数据。
阅读全文