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;
}

posted @ 2022-08-22 21:39  KevinLikesCoding  阅读(149)  评论(0编辑  收藏  举报