码迷,mamicode.com
首页 > 编程语言 > 详细

C++向量和数组的比较

时间:2016-02-18 09:58:37      阅读:397      评论:0      收藏:0      [点我收藏+]

标签:

转:http://blog.chinaunix.net/uid-20653907-id-1590720.html

vector(向量)是c++STL(标准模板类库)的重要一员,使用时,要包含头文件vector即可。

  • 数组无法整体复制

int a[10] = {0};
int b[10] = a; //错

vector<int> c(10);
vector<int> d = c; //正确

除此之外,向量还有好多种定义方式,还可以从数组中获得初值,例如

int a[3] = {1, 2, 3};
vector<int> va(a, a+3);

 

  • 数组无法动态定做,或者要做额外的善后工作

int n;
cin>>n;
int a[n]; //不正确,数组大小不确定

若采用动态定做,从而需要释放空间

int n;
cin>>n;
int* ap = new int[n];
// 一系列数据处理
delete[] ap;

如果换成向量,则一目了然

int n;
cin>>n;
vector<int> va(n);

  • 数组无法扩容

vectot<int> va;

//无法想象对应的数组操作
for (int a; cin>>a; va.push_bach(a));

 

向量还有好多常用的操作,这些操作是数组所不具备,但同时向量又可以像数组一样被使用,例如:

vector<int> a;
a.push_bach(5); //在a向量最后位置插入一个元素
a.pop_back(); //删除a向量的最后一个元素
a.clear(); //清空a向量中的元素
int x = a.front(); //将a向量的第一个元素赋给x
int y = a.back(); //将a向量的最后一个元素赋给y
bool b = a.empty(); //判断是否为空
a.resize(10); //将元素个数调至10个,多则删,少则补

//等等

其中a.begin(),b.end()分别表示向量a的起始元素位置和最后一个元素之外的元素位置.

输出向量中的元素可以如下:

for (int i = 0; i < a.size(); ++i)
    cout<<a[]<<" ";

还有一个比较有用的是对向量中的元素进行排序:

sort(a.begin(), a.end()); //从小到大排序

C++向量和数组的比较

标签:

原文地址:http://www.cnblogs.com/Qianqian-Dong/p/5197176.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!