vector 比数组好?
今天看jiangly代码的时候,发现jiangly用vector而不是数组:
于是我测试了一下。
#include <bits/stdc++.h>
using namespace std;
const int N=1e8;
int a[N];
vector<int>b(N);
vector<int>c(N);
int main(){
clock_t t,t1,t2,t3;
t=clock();
for(int i=1;i<N;i++) a[i]=i;
t1=clock()-t;
for(int i=1;i<N;i++) b[i]=i;
t2=clock()-t1;
for(int i=1;i<N;i++) c.push_back(i);
t3=clock()-t2;
cout << t1 << t2 << t3;
return 0;
}
测试分别为数组,vector的普通给值和添加操作。
测试效果不理想:
但别忘了,大多OI都是开O2的,一下是O2优化的结果:
结果还是不理想。
那为什么有人还是用vector呢?
一、添加
普通数组添加值一般要多加一个变量来记录数组的长度:
a[++l]=x;
但vector不需要:
a.push_back(x)
时间也差不了多少
二、存储
普通数组放在全局变量里会栈溢出,但vector不会:
数组:
vector:
而且vector自带初始化,不想局部数组变量不初始化
三、遍历
新版本的c++中,可以用auto遍历vector
#include <bits/stdc++.h>
using namespace std;
int main(){
vector<int>a;
for(int i=1;i<=10;i++) a.push_back(2*i);
for(auto i:a) cout << i << endl;
return 0;
}