博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

黑与白的世界

如果人们按照程序员编程的方式修建房屋,那么一只啄木鸟就能毁灭整个文明
dongj.cublog.cn


向量与数组的比较

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()); //从小到大排序

 TAG 向量 数组
发表于: 2008-04-08 ,修改于: 2008-04-08 18:07,已浏览268次,有评论0条 推荐 投诉


网友评论

发表评论