vector resize后pushback
时间: 2023-07-08 14:41:09 浏览: 80
当对 `vector` 进行 `resize` 操作后,可以通过 `push_back` 函数向 `vector` 的末尾添加元素。如果添加的元素数量超过了 `vector` 的新大小,那么会触发重新分配内存的操作。
例如,假设有一个存储整数的 `vector v`,要将其大小调整为 `10`,多余的新空间用 `0` 来填充,并添加 `3` 个元素 `1, 2, 3`,可以这样写:
```
v.resize(10, 0); // 将 v 大小调整为 10,并用 0 填充多余的空间
v.push_back(1); // 在 v 的末尾添加元素 1
v.push_back(2); // 在 v 的末尾添加元素 2
v.push_back(3); // 在 v 的末尾添加元素 3
```
这样,`vector v` 的元素为 `0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3`。
需要注意的是,当添加元素时,如果 `vector` 的大小不够用,会触发重新分配内存的操作,这个操作可能会导致迭代器和指针失效。所以,如果需要在 `vector` 中添加大量元素,最好先调用 `reserve` 函数预先分配好足够的内存空间,避免频繁地重新分配内存。
相关问题
vector resize
`vector`的`resize`操作是用于改变`vector`的大小。当我们需要增加或减少`vector`中的元素数量时,可以使用`resize`操作。`resize`会改变`vector`的大小,并且如果需要的话,它会分配或释放内存。
以下是一个使用`resize`操作改变`vector`大小的示例:
```cpp
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec;
vec.resize(100); // 改变vector的大小为100
std::cout << "Vector size: " << vec.size() << std::endl; // 输出:Vector size: 100
return 0;
}
```
在上面的示例中,我们首先创建了一个空的`vector`对象`vec`。然后,我们使用`resize`操作将`vector`的大小改变为100。最后,我们使用`size`函数获取`vector`的大小并输出。
vector resize方法
vector的resize方法是用来改变vector的大小的。如果参数的数值比vector的当前大小大,那么vector会用0来填充新增的元素;如果参数的数值比vector的当前大小小,那么在设置的大小和当前大小之间的元素会被删除。比较两个vector是否相等时,会比较它们的大小和对应位置上的元素是否相等。
具体来说,resize方法有两个参数:_Newsize和_Val。_Newsize用来设置vector的新大小,_Val是可选的,用来为新增的元素赋值。注意,resize方法并不会改变之前数组的值,只会改变数组的长度和新增元素的值。
下面是一个示例代码,展示了resize方法的使用:
```cpp
#include <iostream>
#include <vector>
using namespace std;
struct squareXY {
int x;
int y;
};
int main() {
squareXY rexy = {1, 2};
squareXY xy = {3, 4};
vector<squareXY> s(10, xy);
cout << "resize之前的数组:" << endl;
for (int i = 0; i < s.size(); i++) {
cout << s[i].x << "------" << s[i].y << endl;
}
s.resize(20, rexy);
cout << "resize之后的数组:" << endl;
for (int i = 0; i < s.size(); i++) {
cout << i << ":" << s[i].x << "------" << s[i].y << endl;
}
return 0;
}
```
运行以上代码,可以看到resize方法改变了vector的大小,并根据需要进行元素的填充或删除。