C语言中,我们常常为数组开多大而烦恼,这时vector能很好的解决数组越界等情况。
vector即向量,我们称他为“不定长数组”比较好,它的长度会根据需要而自动变化,另外vector还可以用来以邻接链表的方式储存图,另外Vector在使用时需要声明#include<vector>
以及using namespace std;
下面我们就能使用vector了:
一、vector的定义:
- 单独定义一个vertor
vector<typename> name;
注:typename可以是任何基本类型,例如:char,int,double,结构体等,并且其也可以是STL的标准容器,如vector,set,queue等。但当typename是STL的标准容器时,定义的时候要在>>前加上空格符,即vector<vector<int> >name;
- 定义Vector数组的方法
vector<typename> arrayname[arraysize];
二、Vector容器内元素的访问
vector一般有两种访问方式:
- 通过下标访问:
与普通数组访问方式相同! - 通过迭代器访问:
可以理解为通过指针访问,其定义为:vector<int>::iterator it;
这样我们便定义好了一个迭代器(iterator)it,并且可以通过*it来访问vector里面的元素。举个例子:
vector<int>vi;
for(vector<int>::iterator it = vi.begin();it != vi.end;it++)
{
printf("%d",*it);
}//vi是已经定义好的一个数组
三、vector常用函数
begin();
获取vector首元素地址。例:for(vector<int>::iterator it = vi.begin();it != vi.end;it++)
end();
获取vector末元素的地址。例:同上
注:vector迭代器不支持it < vi.end()
的写法,因此只能用it != vi.end()
push_back(x)
再vector后面添加一个元素x 例:vi.push_back(x);
pop.back();
删除vector的尾元素。 例:vi.pop.back();
size();
获取vector中元素个数。 例:vi.size();
clear();
清除vector中所有的元素。例:vi.clear();
insert(it,x);
向vector的任意迭代器it处插入一个元素x。例:vi.insert(vi.begin()+2,-1);//再数组vi第二个元素后插入-1
erase();
erase()有两种用法:1.erase(it);
删除迭代器为it处的元素
2.erase(first,last)
删除[first,last)区间里的元素。
四、用邻接表存储图
//未完待续