一.vector特点
C++中的vector容器特点:
- 与动态数组相似,可构建变量大小的数组
- 可初始化全部为非零的数据,而new只能初始化全部为0或首项为非0剩余为0
- 与数组有所不同,vector可以对容量进行自增
二.自增规则
开辟一块原内存大小1.5倍(或2倍)的新内存(不一定是相邻地址),并将原数据拷贝到新内存中,释放原内存。而不是在原内存基础上顺序增加新内存。
用以下代码显示size()和capacity()之间的关系和自增规律。
其中p.size()是当前已用的空间大小,p.capacity()是容器容量大小,后者减前者即为可用空间大小。
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> p;
cout << "p.size(): " << p.size() << " p.capacity(): " << p.capacity() << endl;
for (int i = 0; i < 10; i++){
p.push_back(i);
cout << "p.size(): " << p.size() << " p.capacity(): " << p.capacity() << endl;
}
return 0;
}
【下图为VS2019的运行结果:1.5倍自增】
【下图为gcc的运行结果:2倍自增】
更详尽的讲解测试:https://blog.csdn.net/qq_26849233/article/details/70738621
三.性能
数组 > 动态数组 > 预先reverse的vector > vector