浅谈STL中的vector

引言:

c++因为有了STL库所以变得比c语言简单了许多,许多容器不需要自己实现,在STL中有各种你想要的容器及函数,今天就要介绍一下c++最常用的容器之一vector的相关操作。

什么是vector?

vector和数组一样,可以存储任意数据类型,只不过容器大小可以不提前声明。简言之vector就是一个可以动态改变大小的顺序数组。

如何使用:

#include
using namespace std;

vector的声明:

vector的声明有多种方式:(数据类型以int为例)
①声明一个空向量
vector ve;
②声明一个大小为size,初始值为0的向量
vector ve(int size);
③声明一个大小为size,初始值为n的向量
vector ve(int size,int n)
④用另一个向量赋值
vector temp(10,1); vector ve(temp);

判断向量是否为空:

ve.empty();

获得当前向量大小:

①返回向量中元素的个数

ve.size();

②返回当前向量所能容纳的最大元素值

ve.capacity();

③返回最大可允许的vector元素数量值

ve.max_size();

④重新设置向量大小为m

ve.resize(m)

添加元素:

①添加元素n到向量最后面

ve.push_back(n);

②插入元素m到向量下标为n位置

ve.insert(ve.begin()+n,m);

③从下标为n的位置插入p个元素m

ve.insert(ve.begin()+n,p,m);

删除元素:

①删除向量最后一个元素

ve.pop_back();

②删除下标为n的元素

ve.erase(ve.begin()+n);

③删除多个元素(下标从n到m 含n不含m[n,m))

ve.erase(ve.begin()+n,ve.begin()+m);

④清除向量

ve.clear();

遍历向量:

①返回下标为n的元素的引用

ve.at(n);

②返回第一个元素的引用

ve.front();

③返回最后一个元素的引用

ve.back();

④返回向量头指针,指向第一个元素

ve.begin();

⑤返回向量尾指针,指向向量最后一个元素的下一个位置

ve.end();

⑥反向迭代器,指向最后一个元素

ve.rbegin();

⑦反向迭代器,指向第一个元素之前的位置

ve.rend();

遍历向量的方法:

①取下标

for(int i=0;i<ve.size();i++)
{
	cout<<ve[i]<<"\t";
}

②使用迭代器

for(vector<int>::iterator it=ve.begin();it!=ve.end();it++)
{
	cout<<*it<<"\t";
}

③反向使用迭代器

for(vector<int>::reverse_iterator  it=ve.rbegin();it!=ve.rend();it++)
{
	cout<<*it<<"\t";
}

判断某元素是否在vector里:

num=25;
vector<int>:: iterator iter;
iter=find(ve.begin(),ve.end(),num);
if(iter==ve.end()){
	cout<<num<<"在向量里"<<endl;
}else{
	cout<<num<<"不在向量里"<<endl;
}

其他操作:

①把两个向量的所有元素进行交换

ve1.swap(ve2);

②交换向量中两个元素位置

swap(ve[i],ve[j]);

③对向量的元素进行排序(按函数cmp的规则排序) 需要导入algorithm库

sort(ve.begin(),ve.end(),cmp);

④反转向量顺序(需要导入algorithm库)

reverse(ve.begin(),ve.end());

⑤从下标为m到n反转向量(含m不含n [m,n) )

reverse(ve.begin()+m,ve.begin()+n);

最后:

写下这篇博客第一是帮助自己复习vector,另外能帮到需要的小伙伴是最好的了。

你可能感兴趣的:(STL)