快速弄懂C++标准模板库STL中容器vector的使用

vector的定义

vector,是C++标准模板库(STL)中封装的一种容器,是一种变长数组。可以用来以邻接表的方式储存图。使用vector要添加头文件:

#include
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容器中的元素

  1. 通过下标访问,vi[0]、vi[1]…
  2. 通过迭代器访问。

迭代器(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更方便)

你可能感兴趣的:(C++)