C++标准模板库(STL)用法介绍:vector
vector:向量,STL容器之一,可以理解成一个封装了多种操作变长数组。
使用vector前需要添加:
#include <vector>
using namespace std;
1. vector声明
vector是一个模板类,所以使用前需要声明。用变长数组来理解它:
一维数组
vector<typename> vi;
typename可以是任何基本类型,也可以是STL标准容器
二维数组
- 两个维数都可变长
vector<vector<typename> > name;
注:>>之间需要加空格,否则可能会被判定为右移操作
- 第一维定长,第二维可变
vector<typename> Arrayname[arraySize];
2. vector访问
一般有两种访问vector内元素的方法:通过下标或者vector的迭代器
(1)通过下标访问
同访问数组,注意访问范围不要超出最后一个元素下标
(2)通过迭代器访问
迭代器(iterator)理解为类似指针的东西,定义为:
vector<typename>::iterator it;
it是vector<typename>::iterator类型的变量,*it用来访问vector里的元素。迭代器都支持支持自增自减,但只有vector和string支持加减整数的操作。因此,vector既可以通过迭代器的自增迭代去访问元素,也支持*(it + i)的访问方式。
假设现在有一个vector容器vi,那么,vi.begin()和vi.end()标志着迭代器的开头(首元素的地址)和结尾(尾元素地址的下一个地址)。
注:vi[i]与*(vi.begin() + i)等价。
3. vector常用函数
(1) push_back()
push_back(x)用来在vector的后面添加新元素x
(2) pop_back()
pop_back()用来删除vector的尾元素
(3) size()
size()用来获得vector中的元素个数
(4) clear()
clear()用来将vector中的所有元素清空
(5) insert()
insert(it, x)用来向vector的迭代器it处插入一个元素x
(6) erase()
- 删除单个元素
erase(it)用来删除迭代器it处的元素
- 删除一个区间内的所有元素
erase(first, last)用来删除迭代器[first, last)内的所有元素
4. vector用途
(1)储存数据
将vector作为数组使用,在元素个数不确定的场合很方便
(2)用邻接表存储图
用vector实现邻接表比较方便
欢迎访问我的STL系列: