为什么vector容器要用到resize函数
时间: 2023-10-11 11:09:06 浏览: 45
在C++中,`vector`是一个动态数组,可以根据需要自动调整大小。当我们向`vector`中添加元素时,如果没有足够的空间,`vector`会自动增加其容量以容纳新元素。但是,如果我们知道我们将要存储的元素数量,我们可以使用`resize`函数来预先分配所需的空间,从而避免在插入元素时进行动态扩展,这可以提高程序的效率。`resize`函数还可以用于缩小`vector`的容量,以释放不需要的内存。
相关问题
vector resize函数
vector的resize函数用于改变容器的大小。它有两种形式:
1. `resize(n)`:将容器的大小改变为n,如果n小于当前容器的大小,则删除超出部分的元素;如果n大于当前容器的大小,则在末尾添加默认构造的元素,使容器大小达到n。
2. `resize(n, value)`:将容器的大小改变为n,如果n小于当前容器的大小,则删除超出部分的元素;如果n大于当前容器的大小,则在末尾添加value指定的元素,使容器大小达到n。
示例代码如下:
```cpp
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
vec.resize(3);
for (const auto& element : vec) {
std::cout << element << " ";
}
// 输出:1 2 3
vec.resize(5, 10);
for (const auto& element : vec) {
std::cout << element << " ";
}
// 输出:1 2 3 10 10
return 0;
}
```
在上面的示例中,首先使用`vec.resize(3)`将容器vec的大小改变为3,超出部分的元素被删除,最终输出结果为1、2、3。然后使用`vec.resize(5, 10)`将容器vec的大小改变为5,超出部分添加了值为10的元素,最终输出结果为1、2、3、10、10。
STL vector resize函数
STL vector的resize函数用于改变容器的大小,可以增加或减少元素的数量。它的语法如下:
```cpp
void resize(size_type count);
void resize(size_type count, const value_type& value);
```
第一个重载函数接受一个`count`参数,表示调整后的容器大小。如果`count`小于当前容器的大小,则会删除多余的元素;如果`count`大于当前容器的大小,则会添加默认构造的元素来填充新位置。
第二个重载函数还接受一个`value`参数,表示要用于填充新位置的元素值。
以下是一个使用resize函数的示例:
```cpp
#include <iostream>
#include <vector>
int main() {
std::vector<int> myVec;
std::cout << "Before resize: size = " << myVec.size() << std::endl;
myVec.resize(5);
std::cout << "After resize: size = " << myVec.size() << std::endl;
return 0;
}
```
输出结果为:
```
Before resize: size = 0
After resize: size = 5
```
在这个示例中,我们先创建了一个空的vector,然后调用resize函数将容器大小改为5。通过查看容器的大小,我们可以看到大小已经改变为5,并且新位置被默认构造的元素填充。
注意,如果使用第二个重载函数并提供了`value`参数,则新位置将使用指定的值进行填充。例如,`myVec.resize(5, 10)`会将容器大小改为5,并用值为10的元素填充新位置。
需要注意的是,resize函数可能会导致元素的增加或删除,因此在使用时要小心,确保不会丢失或产生不必要的元素。