欢迎来到天天文库
浏览记录
ID:51613010
大小:135.75 KB
页数:3页
时间:2020-03-14
《顺序容器list与vector的使用方法对比.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、顺序容器list与vector的使用方法对比List和vector都是一种顺序容器类型,vector支持快速随机访问,list支持快速插入/删除。定义需包含头文件:#include#include要定义某种特殊的容器,都必须在容器名后加一对尖括号,尖括号里面提供容器中存放的元素的类型:vectorsecv;listilist;都定义了默认构造函数,用于创建制定类型的空容器对象,二者用法相同。C++语言中,大多数类型都可作容器的元素类型。容器元素类型必须满足:元素类型必须支持
2、赋值运算;元素类型对象必须可以复制。故除引用类型外,所有内置或复合类型都可用作元素类型,除IO标准库类型外,所有其他标准库类型都是有效的容器元素类型。故二者都支持容器的容器定义方式:vector>lines;list>ilist;C++定义的容器类型中,只有vector和deque容器提供迭代器算术运算以及使用除了==和!=之外的关系操作符来比较两个迭代器(==和!=这两种关系运算适用于所有容器)。这主要是因为只有这两种容器为其元素提供快速、随机的访问。他们的迭代器可以有效的实
3、现算术和关系运算。例如,下面的语句用于计算vector对象的中点位置:vectorvec;vector::iteratoriter=vec.begin()+vec.size()/2;另一方面,代码:listilist;listilist(vec.begin(),vec.end());//复制容器vec中元素到ilist里ilist.begin()+ilist.size()/2;是错误的。list容器的迭代器既不支持算术运算,也不支持关系运算,它只提供前置和后置的自增、自减运算以及相等(不
4、等)运算。二者的迭代器范围都是big()(指向容器元素范围的第一个元素)到end()(指向容器元素范围的最后一个元素的下一位置)。所有容器都提供以下类型:都支持push_back的尾部添加元素方法:stringtext_word;while(cin>>text_word)container.push_back(text_word);container的类型可以是vector和list,二者均可。除了push_back运算,list容器还提供了类似的操作:push_front。这个操作实现在容器首部插入新元素的功能。如:list
5、ilist;//在容器ilist的尾部添加元素for(size_tix=0;ix!=4;++ix)ilist.push_back(ix);使用push_back运算在容器ilist尾部依次添加元素0、1、2、3。然后,我们选择用push_front操作再次在ilist中添加元素://在ilist首部添加元素for(size_tix=0;ix!=4;ix++)ilist.push_front(ix);此时,元素0、1、2、3则被依次添加在ilist的开始位置。结束后,ilist内元素为3、2、1、0、0、1、2、3。二
6、者还都支持使用方法insert()在迭代器范围内的任意位置前插入元素:vec.insert(vec.begin()+vec.size()/2,3);ilist.insert(ilist.end(),3);但应注意的是插入元素可能会使迭代器失效,应谨慎使用。所有容器都支持一下操作:容器内元素的访问:list不支持下标操作,只能通过对迭代器解引用进行访问,或者通过back()和front()运算返回容器的最后一个和第一个元素:if(!ilist.empty()){list::referenceval=*ilist.beg
7、in();list::referenceval2=ilist.front();list::referencelast=*--ilist.end();list::referencelast2=ilist.back();}而vector支持下标和at()操作,但应注意不要造成下标越界:vectorsvec;cout<
此文档下载收益归作者所有