STL----vector
vector的一些常用操作
注意遍历的时候不能这么写
for(int i=0;i<=v[x].size()-1;++i)
只能这么写
for(int i=0;i<v[x].size();++i)
- 定义 vector <int> vec或者vector <int> vec[50];
- 支持随机访问,可以像[i]一样取值,a但是不能在任意位置o(1)插入。只能在尾部增删。
- size返回长度n,empty返回bool类型表明vec是否为空。
- clear,清空
- begin()返回指向a第一个元素的迭代器,若a非空,*a.begin 和a[0]作用相同。
- end()返回指向a尾部。*a.end()与a[n]都是越界访问。
- 遍历vector
for(int i = 0;i < a.size();++i) cout<<a[i]<<endl;
for(int i = 0;i < a[k].size();++i) cout<<a[k][i]<<endl;
for(vector<int>::iterator it = a.begin(); it != a.end() ; ++it) cout<<*it<<endl;
6.front和back分别返回第一个和最后一个元素
7.插入删除。
8.用vector代替灵界表保存有向图
vector<int> ver[1000],edge[1000]; void add(int x,int y,int z) { ver[x].push_back(y); edge[x].push_back(z); } //遍历由x出发的边 for(int i=0;i<ver[x].size();++i) { // 有向边(x,y,z) int y = ver[x][i],z = edge[x][i]; }