vector的定义
vector,是C++标准模板库(STL)中封装的一种容器,是一种变长数组。可以用来以邻接表的方式储存图。使用vector要添加头文件:
#include<vector>
using namespace std;
vector<typename> vi; //定义一个vector,是个变长一维数组
typename可以是int、char、结构体等,也可以是STL标准容器,例如vector、set、queue等。例如
vector<vector<int> > name;
//这相当于二维数组。>>之间要加空格因为C++11之前标准的编译器会把它视为移位操作。
vector<typename> Arrayname[arraysize];
//定义vector数组,元素的类型是vector,也是二维数组,不过一维长度已固定为arraysize
访问vector容器中的元素
- 通过下标访问,vi[0]、vi[1]…
- 通过迭代器访问。
迭代器(iterator)可以理解为类似指针的东西。其定义是:
vector::iterator it;
可以通过*it来访问vector里的元素。
vi.begin(); //取vi的首元素地址,对应vi[0]
vi.end(); //取vi尾元素的下一个地址(左闭右开)
vector<int>::iterator it = vi.begin();
//it指向vi的首地址,*(it+i)等价于vi[i]
end()作为迭代器末尾标志,不储存任何元素。
迭代器也有自加自减操作,it和it。且在常用STL容器中,只有vector和string可以使用vi.begin()+n这种迭代器加上整数的写法。
vi.push_back(i); //在vi的末尾添加元素i
vi.pop_back(); //删除vi的尾元素
vi.size(); //获取元素个数
vi.clear(); //清空所有元素
vi.insert(it,x); //向vector的迭代器it处插入一个元素x
vi.insert(vi.begin()+2, -1); //将-1插入vi[2]的位置
vi.erase(it); //删除迭代器为it处的元素
vi.erase(vi.begin()+3); //删除单个元素
vi.erase(vi.begin()+1, vi.begin()+4);//删除vi[1]、vi[2]、vi[3] 左开右闭
vi.erase(vi.begin(). vi.end()); //删除所有元素(yongclear更方便)