C++中的 STL Deque 容器研究.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C中的STLDeque容器研究

本文档深入分析了std::deque,并提供了一个指导思想:当考虑到内存分配和执行性能的时候,使用std::deque要比std::vector好。      介绍      本文深入地研究了std::deque 容器。本文将讨论在一些情况下使用deque 比vector更好。读完这篇文章后读者应该能够理解在容量增长的过程中deque 与vector在内存分配和性能的不同表现。由于deque 和vector的用法很相似,读者可以参考vector 文档中介绍如何使用STL容器。      Deque总览      deque和vector一样都是标准模板库中的内容,deque是双端队列,在接口上和vector非常相似,在许多操作的地方可以直接替换。假如读者已经能够有效地使用vector容器,下面提供deque的成员函数和操作,进行对比参考。      Deque成员函数       函数   描述 c.assign(beg,end)   c.assign(n,elem)   将[beg; end)区间中的数据赋值给c。   将n个elem的拷贝赋值给c。 c.at(idx)   传回索引idx所指的数据,假如idx越界,抛出out_of_range。 c.back()   传回最后一个数据,不检查这个数据是否存在。 c.begin()   传回迭代器重的可一个数据。 c.clear()   移除容器中所有数据。 dequeElem c   dequeElem c1(c2)   DequeElem c(n)   DequeElem c(n, elem)   DequeElem c(beg,end)   c.~dequeElem()   创建一个空的deque。   复制一个deque。   创建一个deque,含有n个数据,数据均已缺省构造产生。   创建一个含有n个elem拷贝的deque。   创建一个以[beg;end)区间的deque。   销毁所有数据,释放内存。 c.empty()   判定容器是否为空。 c.end()   指向迭代器中的最后一个数据地址。 c.erase(pos)   c.erase(beg,end)   删除pos位置的数据,传回下一个数据的位置。   删除[beg,end)区间的数据,传回下一个数据的位置。 c.front()   传回地一个数据。 get_allocator   使用构造函数返回一个拷贝。 c.insert(pos,elem)   c.insert(pos,n,elem)   c.insert(pos,beg,end)   在pos位置插入一个elem拷贝,传回新数据位置。   在pos位置插入n个elem数据。无返回值。   在pos位置插入在[beg,end)区间的数据。无返回值。 c.max_size()   返回容器中最大数据的数量。 c.pop_back()   删除最后一个数据。 c.pop_front()   删除头部数据。 c.push_back(elem)   在尾部加入一个数据。 c.push_front(elem)   在头部插入一个数据。 c.rbegin()   传回一个逆向队列的第一个数据。 c.rend()   传回一个逆向队列的最后一个数据的下一个位置。 c.resize(num)   重新指定队列的长度。 c.size()   返回容器中实际数据的个数。 C1.swap(c2)   Swap(c1,c2)   将c1和c2元素互换。   同上操作。   Deque操作       函数   描述 operator[]   返回容器中指定位置的一个引用。   上面这些特征和vector明显相似,所以我们会提出下面的疑问。      问题:假如deque和vector可以提供相同功能的时候,我们使用哪一个更好呢?      回答:假如你要问的话,就使用vector吧。      或者你给个解释?      非常兴奋你这样问,的确,这并不是无中生有的,事实上,在C++标准里解释了这个问题,下面有一个片断:      vector在默认情况下是典型的使用序列的方法,对于deque,当使用插入删除操作的时候是一个更好的选择。      有趣的是,本文就是要非常彻底地理解这句话。      什么是新的?      细读上面两张表格,你会发现和vector比较这里增加了两个函数。      1、c.push_front(elem) —— 在头部插入一个数据。      2、c.pop_front() —— 删除头部数据。      调用方法和c.push_back(elem)和c.pop_back()相同

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档