顺序容器list与vector的使用方法对比_第1页
顺序容器list与vector的使用方法对比_第2页
顺序容器list与vector的使用方法对比_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

顺序容器list与vector的使用方法对比List和vector都是一种顺序容器类型,vector支持快速随机访问,list支持快速插入/删除。定义需包含头文件:#include #include 要定义某种特殊的容器,都必须在容器名后加一对尖括号,尖括号里面提供容器中存放的元素的类型:vector secv;list ilist;都定义了默认构造函数,用于创建制定类型的空容器对象,二者用法相同。C+语言中,大多数类型都可作容器的元素类型。容器元素类型必须满足:元素类型必须支持赋值运算;元素类型对象必须可以复制。故除引用类型外,所有内置或复合类型都可用作元素类型,除IO标准库类型外,所有其他标准库类型都是有效的容器元素类型。故二者都支持容器的容器定义方式:vector vector lines;list list ilist;C+定义的容器类型中,只有vector和deque容器提供迭代器算术运算以及使用除了=和!=之外的关系操作符来比较两个迭代器(=和!=这两种关系运算适用于所有容器)。这主要是因为只有这两种容器为其元素提供快速、随机的访问。他们的迭代器可以有效的实现算术和关系运算。例如,下面的语句用于计算vector对象的中点位置:vector vec;vector :iterator iter = vec.begin() + vec.size() / 2;另一方面,代码:list ilist;list ilist( vec.begin(), vec.end() ); /复制容器vec中元素到ilist里ilist.begin() + ilist.size() / 2;是错误的。list容器的迭代器既不支持算术运算,也不支持关系运算,它只提供前置和后置的自增、自减运算以及相等(不等)运算。二者的迭代器范围都是big()(指向容器元素范围的第一个元素)到end()(指向容器元素范围的最后一个元素的下一位置)。所有容器都提供以下类型:都支持push_back的尾部添加元素方法:string text_word;while( cin text_word )container.push_back(text_word);container的类型可以是vector和list,二者均可。除了push_back运算,list容器还提供了类似的操作:push_front。这个操作实现在容器首部插入新元素的功能。如:list ilist;/在容器ilist的尾部添加元素for( size_t ix = 0; ix != 4; +ix )ilist.push_back(ix);使用push_back运算在容器ilist尾部依次添加元素0、1、2、3。然后,我们选择用push_front操作再次在ilist中添加元素:/在ilist首部添加元素for( size_t ix = 0; ix != 4; ix+ )ilist.push_front(ix);此时,元素0、1、2、3则被依次添加在ilist的开始位置。结束后,ilist内元素为3、2、1、0、0、1、2、3。二者还都支持使用方法insert()在迭代器范围内的任意位置前插入元素:vec.insert( vec.begin() + vec.size() / 2, 3);ilist.insert( ilist.end(), 3 );但应注意的是插入元素可能会使迭代器失效,应谨慎使用。所有容器都支持一下操作:容器内元素的访问:list不支持下标操作,只能通过对迭代器解引用进行访问,或者通过back()和front()运算返回容器的最后一个和第一个元素:if ( !ilist.empty() )list :reference val = *ilist.begin();list :reference val2 = ilist.front();list :reference last = *-ilist.end();list :reference last2 = ilist.back();而vector支持下标和at()操作,但

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论