预览加载中,请您耐心等待几秒...
1/5
2/5
3/5
4/5
5/5

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

Vector Vector是同一类型的集合。每个对象都有一个对应的整数索引值。我们把vector称为容器,是因为它可以包含其他对象。 vector不是数据类型,只是模板,它可以定义多种数据类型。Vector类型的每一种都指定了其他保存的元素的类型。 Vector的定义和初始化 几种初始化Vector对象的方式vector<T>v1保存的类型为T,默认的构造函数,v1为空vector<T>v2(v1)v2是v1的副本vector<T>v3(n,i)v3包含n个i元素vector<T>v4(n)v4含有值初始化的元素N个副本 注意: 创建非空的vector对象,必须给出初始化的值。 当把一个vector对象复制到另外一个vector对象时候,新复制的对象每个元素都初始化为原vector相应的元素副本。但是这两个vector的对象类型一定要一样。 Vector值初始化 如果没有指定元素的初始化,那么标准库将自行的提供一个元素的初始化值进行值的初始化,这个有库生产的初始化值用来初始化容器的每个元素。具体的值为何,取决于存储在vector中的元素类型。 问题,下列哪些vector定义不正确。 vector<vector<int>>ivec; vector<string>svec=ivec; vector<string>svec(10,”null”); 下列的元素各是多少个,各个元素的值又是多少? vector<int>ivec1; vector<int>ivec2(10); vector<int>ivec3(10,42); vector<string>svec1; vector<string>svec2(10); vector<string>svec3(10,”hello”); vector对象的操作 vector操作v.empty()如果v为空,返回true,否则,falsev.size()返回v中元素的个数v.push_back(t)在v末尾增加一个t元素v[n]返回v中位置为n的元素v1=v2把v1的元素替换为v2中的元素副本v1==v2如果v1==v2则返回true!=,<,<=,>,>=保持这些操作符的惯有含义 Vector的size .size()操作返回的值不是整数类型(int,long,char).是之固有的类型.成员函数size返回相应vector类定义的size_type的值。 注意,使用size_type类型时候,必须制定该类型在哪里定义的。 vector<int>::size_type; vector::size_type; 向vector添加元素 push_back(),操作接受一个元素值,并将它作为一个心的元素添加到vector对象的后面。 Vector的下标操作 vector中的对象是没有命名的,可以按vector对象的位置来访问他们。通常来使用下标来获取元素。元素的位置是从0开始。 vector<int>ivec; ivec[0]=42; 注意,下标操作仅能提取确实已经存在的元素。 列出三种vector对象的方法,给定10个元素,每个元素都为42,并指出是否还有更好的实现方法? 迭代器简介 迭代器是一种检查容器内元素并遍历元素的数据类型。 所有的标准库容器都定义了相应的迭代器类型,而只有少数的容器支持下标操作。 vector<int>::interatoriter; bigin和end操作 每种容器都定义了一对命名为begin和end的函数,用于返回迭代器,如果容器中有元素的话,由begin返回的迭代器指向第一个元素。 vector<int>::interatoriter=ivec.begin(); 由end操作返回的迭代器指向vector的“末端元素的下一个”。通常称为超出末端迭代器,表明它指向了一个不存在的元素,如果vector为空,begin返回的迭代器与end返回的迭代器是相同的。 由于end操作返回的迭代器并不指向vector中的任何实际的元素,相反,它只是起一个哨兵的作用,表示我们已经处理完vector中的所有元素。 vector迭代器的自增和解引用运算 迭代器类型可以使用解引用操作符来访问迭代器所指向的元素。 *iter=0; 假设,iter指向vector对象的ievc的第一个元素,那么*iter和ievc[0]就事指向的同一个元素。 迭代器使用自增操作符,向前移动迭代器指向容器的下一个元素,从逻辑上说,迭代器的自增作用和int类型对象自增操作类似。对于int类型对象来说,操作结果就事把int类型的值“加1”,而对迭代器对象则是把容器的迭代器“向前移动一个位置”,因此,