vector(向量): 是一种序列式容器,类似于数组,但是内置了许多方便的操作和算法,而且可以自动扩展空间,不会出现像数组一样上限不够而溢出。在末端插入删除快,其他地方插入慢
使用vector需要头文件
#include<vector>
1.初始化和定义:
// int可以换成所需要的数据类型 如结构体,string,甚至可以vector<vector<int> >v; v里面装的还是一个vector类型,类似于一个二维数组,不过不怎么常用
vector<int>a(10); //初始化一个空间为10的容器,初始值默认为0
vector<int>a(10,5); //初始化一个空间为10的容器,初始值默认为5
vector<int>a(b); //用向量b初始化a;
vector<int>a(b.begin()+1,b.begin()+3); //用b向量下标为1到2的元素初始化a,在STL中迭代器指向得是最后一个元素的下一个元素,所以这里下标为3的没有算
vector<int>::iterator it; //迭代器申明
2.插入操作
vector<int>a(2);
vector<int>b;
b.push_back(1);b.push_back(7);b.push_back(10);
a.push_back(3);// 在向量a最后插入一个3,因为初始化时就有了两个数,所以插入后总共是3个
vector<int>::iterator it=a.begin();
a.insert(a.begin()+1,4); //在a中下标为1的地方插入一个4,现在a的元素为0,4,0,3
a.insert(a.begin(),n,2); //从a中下标为0的元素开始插入n个2,假设n=3,那么现在中元素2,2,2,0,4,0,3
a.insert(a.begin()+1,b.begin(),b.begin()+2) //把b中0,1两个元素插入到a.begin()+1指向的位置 则现在a中元素:2,1,7,2,2,0,4,0,3
3.删除
a.pop_back(); //删除最后一个元素
vector<int>::iterator it=a.begin();
a.erase(it);//删除a中迭代器指定位置的元素
a.erase(it+1,it+2); //删除a中下表为1的元素
a.clear(); //清空向量a
4.访问
//可以通过下标访问 如a[0],a[1]
//也可以通过迭代器
for(vector<int>::iterator it=a.begin();it!=a.end();it++)
cout<<*it<<endl; //对元素的遍历
5.常用函数
a.size(); //返回当前a中的元素个数
a.empty(); //判空 为空返回真
a.swap(b); //交换a,b容器的值
6.算法
reverse(a.begin(),a.end()); //反转元素
sort(a.begin(),a.end()); //排序元素,默认从小到大,可以自定义排序方式