vector:译为变长数组,可用来以邻接表的方式存储图(不需要使用指针)。
使用vector:添加#include<vector>;using namespace std
vector常用函数:
(1)push_back()
push_back(x): 在vector后面添加一个元素x,时间复杂度:O(1)
(2)pop_back()
pop_back(): 删除vector的尾元素,时间复杂度:O(1)
(3)size()
(4)clear()
(5)insert()
insert(it, x): 用来向vector任意迭代器it处插入一个元素x,时间复杂度O(N)
(6)erase()
erase()有两种用法:删除单个元素、删除一个区间内所有元素,时间复杂度均为O(N)
①删除单个元素
erase(it)即删除迭代器为it处的元素
②删除一个区间内的所有元素
erase(first, last) 即删除[first, last)内所有元素
如果要删除vector内所有元素,正确的写法为:vi.erase(vi.begin(), vi.end())或vi.clear()
vector本身没有find()函数,其find函数需要借助algorithm实现;
(7)assign()
功能:1. 将区间[first,last)的元素赋值到当前的vector容器中,
2. 赋n个值为x的元素到vector容器中,这个容器会清除掉vector容器中以前的内容。
vector<int> v1{ 1,2,3 };
v1.assign(4, 5);
vector<int> v2;
v2.assign(v1.begin(), v1.end());
vector定义时指定大小:
vector<int> v(5)//size为5,值默认为0
vector<int> v;
v.resize(5);
vector定义时指定大小并赋相同初值:
vector<int> v(5,9)//size为5,初值为9
vector<int> v;
v.resize(5,9);
二维vector指定大小:
vector<vector<int> > v(5)//指定行数
for(int i=0;i<v.size();i++){
v[i].resize(i);//指定列数
//v[i].resize(i,9)//指定列数并对该行赋相同初值
vector<vector<bool> >inq;
vector<bool> tmp(m,false);
inq.resize(n,tmp);