|||
本人最近由于编代码的时候用到了vector函数,下面对用到的vector的部分功能进行总结。
在c++中,vector是一个十分有用的容器,可以随时在任意位置插入数据,也可以随时删除任意位置的数据;
vector中的数据既可以是一般的数据类型也可以是结构体。既可以在函数中使用,也可以在作为函数参数的返回值。
用法简介:
1、使用时头文件需要加上:#include<vector>.
2、声明:vector<int> demo;//int为数据类型,可以替换为double,char等
特别说明:若vector存的为结构体struct,那么结构体需要在主函数中声明,否则编译会出错
在函数中使用实例:vector<struct pointinfo> costxy;
作为函数返回值是的声明:vector<struct pointinfo> &costxy;
3、使用方法:
(1)尾部插入数字:costxy.push_back(a);
(2)使用下标访问元素,cout<<costxy[0]<<endl;记住下标是从0开始的。
(3)使用迭代器访问元素.
vector<int>::iterator it;
for(it=vec.begin();it!=vec.end();it++)
cout<<*it<<endl;
(4)插入元素:
costxy.insert(vec.begin()+i,a);在第i+1个元素前面插入a;
(5)删除元素:
costxy.erase(vec.begin()+2);删除第3个元素
costxy.erase(costxy.begin()+i,costxy.end()+j);删除区间[i,j-1];区间从0开始
删除vector中的最后一个元素有两种发法:
costxy.pop_back();//删除最后一个元素
costxy.erase(costxy.end()-1);//删除最后一个元素
(6)向量大小:costxy.size();
(7)清空:costxy.clear();
4、对于vector里面的一些数据的操作
(1) 使用reverse将元素翻转:需要头文件#include<algorithm>
reverse(vec.begin(),vec.end());将元素翻转(在vector中,如果一个函数中需要两个迭代器,
一般后一个都不包含.)
(2)使用sort排序:需要头文件#include<algorithm>
如果vector的是一般的数据,则可以为
sort(vec.begin(),vec.end());(默认是按升序排列,即从小到大).
可以通过重写排序比较函数按照降序比较,如下:
定义排序比较函数:
bool Comp(const int &a,const int &b)
{ return a>b; }
如果vector的是结构体的数据,需要对结构体的某个数据进行排序,则可以按照下面的方法进行:
// 对std::sort函数进行改进,进行降序排列 3 2 1
bool GreaterSort (pointinfo a,pointinfo b) { return (a.cost > b.cost); }
// 对std::sort函数进行改进,进行升序排列 1 2 3
bool LessSort (pointinfo a,pointinfo b) { return (a.cost < b.cost); }
//若选取的是最大值,则用降序排列GreaterSort;若选择的是最小值,则用升序排列LessSort
sort(costxy.begin(),costxy.end(),GreaterSort);
(参考:http://www.cnblogs.com/wang7/archive/2012/04/27/2474138.html )
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-23 04:53
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社