我们都知道, STL里有一个好用的东西——vector<>。它最大的特点就是可以根据存储了多少变量来改变自身大小。但现在,问题来了:
首先,我们明白,它不可能是一个一个变量扩大的,这样常数太大了。那,它是怎么扩大的呢? 让我们来看一段代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
vector<int> v;
while(1){
int n;
cin>>n;
for(int i=1;i<=n;i++){
v.push_back(1);
cout<<v.size()<<endl;
}
}
return 0;
}
如果你输入500 2000 40000这样的数据的话,你会发现,vector在创建出来的时候就有了500的空间,而接下来它的空间就变成了1000左右,而后是2000、4000、10000……
所以我们可以发现,vector的空间是指数式增长的!