vector定义方法
vector常用函数
vector的应用
vector定义方法vector定义方法
vectorname;
以上定义相当于定义了一个一维数组,只是大小不确定,其长度可以
根据需要而变化
vector的访问
访问vector的元素一般有两种方式。
第一种方式是通过”迭代器“来访问。可以将迭代器(iterator)理解为
一种类似指针的变量,其定义为:
vector::iterator it;
现在,我们已经定义了一个正向迭代器了,我们可以通过”*it“来访问int类型的vector里面的元素,例如:
vector::iterator it=v.begin();//v.begin为取v的首元素地址,而it指向这个地址,相当于v[0].v[i]和*(v.begin()+i)是等价的 for(int i=0;i<=5;i++)printf("%d",*(it+i));//输出v[i]
在常用的STL容器中,只有vector和string允许使用”v.begin()+3"这种迭代器加上整数的写法。同时,迭代器也可以进行自加、自减操作,即it++,++it,it–,--it。例如:
for(vector::iterator it = v.begin();it!=v.end();it++) printf("%d",*it);//输出v[i]
需要注意的是:v.end()并不是取v的尾元素地址,而是尾元素地址的下一个地址,作为迭代器末尾标志不存储任何元素
vector常用函数前面已经介绍了两个vector函数:begin()和end()。下面介绍几个常用的vector函数。
(1) push_back()//push_back(x)用来在vector后面添加一个元素x (2) pop_back()//pop_back()用来删除vector的尾元素 (3) clear()//用来清空vector里面的所有元素 (4) insert()//insert(it,x)用来向vector任意迭代器it处插入一个元素x (5) size()//如果是一维数组,size()用来获得vector中的元素个数;如果是二维数组,size()用来获得vector中第2维的元素个数,同时也可以用resize(n)重设数组大小 (6)erase()//erase()用来删除vector中的元素,有两种做法.一种是erase(it),删除迭代器it处的元素;另一种是erase(first,last),删除左闭右开区间[first,last]内的所有元素。vector的应用
例一 中间数
[问题描述] 依次读入若干正整数,如果是奇数个就输出最中间那个数;
否则,输出中间两个数的和。以0作为结束标志,但0不计数
代码:
#includeusing namespace std; int main(){ vector a; int t,i=0; do{ scanf("%d",&t); a.push_back(t);//不断读入数,添加到容器a的末尾 }while(!=0); a.pop_back();//读到0结束,删除末尾的0 if(a.size()%2==1)printf("%dn",a[a.size()/2]); else printf("%dn",a[(a.size()-1)/2+a[a.size()/2]; return 0; }



