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

图示

Vector使用图示