STL备忘录——vector
2017-06-25 本文已影响38人
oceanLong
前言
vector是c++中非常常用的容器之一。我们可以把它理解为一个封装好的数组。它的储存方式是通过连续地址储存的顺序结构,原理和数组类似,但它同时又提供了insert,erase这些方法。
从它的原理中,我们就可以猜到。vector的读取速度非常快。但在写入尤其是插入方面的性能是无法和list相比的。
引入
#include<vector>
构造方法
// 创建一个默认的vector
vector<int> v = vector<int>();
// 创建一个长度为3的vector
vector<int> v = vector<int>(3);
// 创建一个长度为5,且初始值全部为1的vector
vector<int> v = vector<int>(5,1);
增
vector<int> v = vector<int>();
// 在尾部插入元素
v.push_back(10);
// 在中间插入元素
v.insert(v.begin()+i,a);
这里要注意,在使用insert方法时,一定要配合.begin()
使用,不能直接传入索引。
查
vector<int> v = vector<int>();
// 获取v首个元素的迭代器
v.begin()
// 获取v最后一个元素的迭代器
v.end();
// 获取v的第3个元素的值
v[3]
遍历
vector<int> vec = vector<int>();
vector<int>::iterator it;
for(it=vec.begin();it!=vec.end();it++)
cout<<*it<<endl;
删
vector<int> vec = vector<int>();
// 删除第2个元素
vec.erase(vec.begin()+2);
// 清空vec
vec.clear();
获取长度
vector<int> vec = vector<int>();
// 获取vec的长度
vec.size();
算法
(1) 使用reverse将元素翻转:需要头文件#include<algorithm>
reverse(vec.begin(),vec.end());
将元素翻转(在vector中,如果一个函数中需要两个迭代器,一般后一个都不包含.)
(2)使用sort排序:需要头文件#include<algorithm>
,
sort(vec.begin(),vec.end());
(默认是按升序排列,即从小到大).
可以通过重写排序比较函数按照降序比较,如下:
定义排序比较函数:
bool Comp(const int &a,const int &b)
{
return a>b;
}
调用时:sort(vec.begin(),vec.end(),Comp)
,这样就降序排序。