资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,Outline,标准库,vector,类型,迭代器简介,vector,vector,是同一种类型的对象的集合,每个对象都有一个对应的整数索引值。我们把,vector,称为容器,是因为它可以包含其它对象。一个容器中的所有对象必须是同一种类型的。,使用,vector,之前,必须包含相应的头文件:,#include,vector,vector,是一个类模板(,class template,)。声明从类模板产生的某种类型的对象,需要提供附加信息。以,vector,为例,声明,vector,时必须说明,vector,保存何种对象的类型:,vector ivec;,vector Sales_vec;,vector,对象的操作,v.empty(),如果,v,为空,返回,true,,否则返回,false,v.size(),返回,v,中元素的个数,v.push_back(t),在,v,的末尾增加一个值为,t,的元素,vn,返回,v,中位置为,n,的元素,v1=v2,把,v1,的元素替换为,v2,元素的副本,v1=v2,如果,v1,与,v2,相等,返回,true,vector,的下标操作,vector,的元素位置从,0,开始。,可以使用下标运算符来获取元素。,下标运算符仅能获取已存在的元素,试图对不存在的元素进行操作时产生运行时错误。,vector ivec;/empty vector,for(vector:size_type ix=0;ix!=10;ix+),ivecix=ix;,/disaster:ivec has no elements.,迭代器(,iterator,),每种容器都定义了自己的迭代器类型,如,vector,:,vector:iterator iter;,这条语句定义了一个名为,iter,的变量,其类型是由,vector,定义的,iterator,类型。,begin,和,end,操作,每种容器都定义了一对命名为,begin,和,end,的函数,用于返回迭代器。,如果容器不为空,,begin,返回的迭代器指向第一个元素。如:,vector:iterator iter=ivec.begin();,end,返回的迭代器指向,vector,的末端元素的下一个位置(一个不存在的元素)。,如果容器为空,,begin,返回的迭代器与,end,相同。,解引用操作,迭代器类型可以使用 解引用操作符(*操作符)来访问迭代器指向的元素。,假设,iter,指向,vector,对象,ivec,的第一个元素,则以下两个语句的含义相同。,ivec0=0;,*iter=0;,end,返回的迭代器不指向任何元素,因此不能对其进行解引用操作。,自增和比较,可以使用自增运算符(,+,)向前移动,指向下一个元素。,用,=,和,!=,来比较两个迭代器,如果它们指向同一个元素,则它们相等,否则就不相等。,用迭代器编写循环,for(vector:iterator iter=ivec.begin();iter!=ivec.end();iter+),*iter=0;,
展开阅读全文