Vector
Vector是向量、矢量的意思,在c++里可以理解为一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用来解决问题可以达到最大节约空间的目的。Vector的元素不仅仅可以使int,double,string,还可以是结构体。
常用
尾部插入数字:vec.push_back(a);
使用下标访问元素,cout<<vec[0]<<endl;下标是从0开始的。
插入元素:
vec.insert(vec.begin()+i,a);在第i+1个元素前面插入a;
删除单个元素:
vec.erase(vec.begin()+2);删除第3个元素
删除一组连续的元素:
vec.erase(vec.begin()+i,vec.begin()+j);删除区间[i,j-1];区间从0开始
向量大小: vec.size();
清空: vec.clear();
删除最后一个数据: pop_back();
重新设置该容器的大小: resize(num);
传回第一个数据: front();
传回最后一个数据: back();
重新设置该容器的大小: resize(num);
算法
Reverse
使用reverse将元素翻转:需要头文件#include
reverse(vec.begin(),vec.end());将元素翻转(在vector中,如果一个函数中需要两个迭代器,一般后一个都不包含.)
Sort
使用sort排序:需要头文件#include,
sort(vec.begin(),vec.end());(默认是按升序排列,即从小到大).
示例代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| #include <iostream> #include <algorithm> #include <vector> using namespace std; struct mytype { int id; double value; }t; bool cmp(mytype a,mytype b){ return a.id>b.id; } int main() { vector <mytype> ve; t.id=1,t.value=1.4; ve.push_back(t); for(int i=3;i<=10;i+=2){ t.id=i; t.value+=i; ve.push_back(t); } for(int i=2;i<=10;i+=2){ t.id=i; t.value+=i; ve.push_back(t); } vector <mytype>:: iterator iter; cout<<"用迭代器遍历"<<endl; for(iter=ve.begin();iter!=ve.end();iter++) cout<<(*iter).id<<" "; cout<<"\n"<<"用下标遍历"<<endl; for(int i=0;i<10;i++) cout<<ve[i].id<<" "; cout<<endl; cout<<"Vector 大小:"<<ve.size()<<endl; ve.pop_back(); ve.erase(ve.begin()+4,ve.begin()+6); for(iter=ve.begin();iter!=ve.end();iter++) cout<<(*iter).id<<" "; cout<<"\n"; cout<<"此时第一个元素 和最后一个元素"<<ve.front().id<<" "<<ve.back().id<<endl; sort(ve.begin(),ve.end(),cmp); for(iter=ve.begin();iter!=ve.end();iter++) cout<<(*iter).id<<" "; cout<<"\n"; reverse(ve.begin(),ve.end()); for(iter=ve.begin();iter!=ve.end();iter++) cout<<(*iter).id<<" "; cout<<"\n"; return 0; }
|
图示