Vector操作
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Vector
Vector 是同一类型的集合。每个对象都有一个对应的整数索引值。我们把vector 称为容器,是因为它可以包含其他对象。
vector 不是数据类型,只是模板,它可以定义多种数据类型。Vector类型的每一种都指定了其他保存的元素的类型。
Vector的定义和初始化
注意:
1,创建非空的vector对象,必须给出初始化的值。
2,当把一个vector对象复制到另外一个vector对象时候,新复制的对象每个元素都初始化为原vector相应的元素副本。但是这两个vector的对象类型一定要一样。
Vector值初始化
如果没有指定元素的初始化,那么标准库将自行的提供一个元素的初始化值进行值的初始化,这个有库生产的初始化值用来初始化容器的每个元素。具体的值为何,取决于存储在vector中的元素类型。
问题,下列哪些vector定义不正确。
vector
vector
vector
下列的元素各是多少个,各个元素的值又是多少?
a,vector
b,vector
c,vector
d,vector
e,vector
f,vector
vector对象的操作
Vector的size
.size()操作返回的值不是整数类型(int ,long,char).是之固有的类型.成员函数size 返回相应vector类定义的size_type的值。
注意,使用size_type类型时候,必须制定该类型在哪里定义的。
vector
vector::size_type;
向vector添加元素
push_back(),操作接受一个元素值,并将它作为一个心的元素添加到vector对象的后面。
Vector的下标操作
vector中的对象是没有命名的,可以按vector对象的位置来访问他们。通常来使用下标来获取元素。元素的位置是从0开始。
vector
ivec[0] = 42;
注意,下标操作仅能提取确实已经存在的元素。
列出三种vector对象的方法,给定10个元素,每个元素都为42,并指出是否还有更好的实现方法?
迭代器简介
迭代器是一种检查容器内元素并遍历元素的数据类型。
所有的标准库容器都定义了相应的迭代器类型,而只有少数的容器支持下标操作。vector
bigin和end操作
每种容器都定义了一对命名为begin和end的函数,用于返回迭代器,如果容器中有元素的话,由begin返回的迭代器指向第一个元素。
vector
由end操作返回的迭代器指向vector的“末端元素的下一个”。通常称为超出末端迭代器,表明它指向了一个不存在的元素,如果vector为空,begin返回的迭代器与end返回的迭代器是相同的。
由于end操作返回的迭代器并不指向vector中的任何实际的元素,相反,它只是起一个哨兵的作用,表示我们已经处理完vector中的所有元素。
vector迭代器的自增和解引用运算
迭代器类型可以使用解引用操作符来访问迭代器所指向的元素。
*iter = 0;
假设,iter指向vector对象的ievc的第一个元素,那么*iter和ievc[0]就事指向的同一个元素。
迭代器使用自增操作符,向前移动迭代器指向容器的下一个元素,从逻辑上说,
迭代器的自增作用和int类型对象自增操作类似。对于int类型对象来说,操作结果就事把int类型的值“加1”,而对迭代器对象则是把容器的迭代器“向前移动一个位置”,因此,如果迭代器iter指向第一个元素,则++iter指向第二个元素。
迭代器的其他操作
另一对可执行于迭代器的操作就事比较,用== 或!= 来比较两个迭代器,如果两个迭代器对象指向同一个元素,则他们相等,否则他们不相等。
for(vector
const_iterator
每种容器还定义了一种名为const_iterator的类型,该类型只能用于读取容器的元素,但不能改变其值。
我们对普通的interator解引用时候,得到是某个元素的非const引用。而如果我们对const_interator类型解引用,则可以得到一个指向const对象的引用,如同任何常量一样,该对象不能进行重写。
for(vector
作业,编写程序来创建10个元素的vector对象,用迭代器来把每个元素值改成当前值的2倍。