C++

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),这样就降序排序。

上一篇下一篇

猜你喜欢

热点阅读