STL:vector

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());  //排序元素,默认从小到大,可以自定义排序方式

参考博客

发布了33 篇原创文章 · 获赞 14 · 访问量 436

猜你喜欢

转载自blog.csdn.net/qq_44077455/article/details/102888724