vector动态分配内存
时间: 2023-12-22 18:29:28 浏览: 37
在C++ STL中,vector是一个动态数组,它可以根据需要自动调整大小。当我们向vector中添加元素时,如果当前的容量不足以容纳新元素,vector会自动分配更大的内存空间,并将原有的元素复制到新的内存空间中。这个过程称为动态分配内存。
下面是一个示例代码,演示了如何使用vector进行动态分配内存:
```cpp
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec; // 创建一个空的vector
// 向vector中添加元素
for (int i = 0; i < 10; i++) {
vec.push_back(i);
}
// 打印vector中的元素
for (int i = 0; i < vec.size(); i++) {
std::cout << vec[i] << " ";
}
std::cout << std::endl;
return 0;
}
```
运行上述代码,输出结果为:
```
0 1 2 3 4 5 6 7 8 9
```
在这个示例中,我们创建了一个空的vector,并使用`push_back()`函数向其中添加了10个整数。由于初始时vector的容量为0,所以在添加元素时会动态分配内存。当添加第一个元素时,vector会分配一块内存来存储这个元素;当添加第二个元素时,vector会分配一块更大的内存,并将原有的元素复制到新的内存空间中;以此类推,直到所有元素都添加完毕。
需要注意的是,当vector的容量不再需要增加时,为了节省内存空间,vector可能会释放一部分内存。这个过程是自动进行的,我们无需手动释放内存。