当前位置:  编程语言>c/c++

双向队列Deque 类成员函数列表参考(c++ STL 容器)

 
分享到:
    发布时间:2014-3-11  


    本文导语:  C++ Double Ended Queues(双向队列)成员函数列表参考 双向队列和向量很相似,但是它允许在容器头部快速插入和删除(就像在尾部一样)。 Deque成员函数如下:Constructors创建一个新双向队列Operators比较和赋值双向队...

 c++ double ended queues(双向队列)成员函数列表参考

 双向队列和向量很相似,但是它允许在容器头部快速插入和删除(就像在尾部一样)。

   Deque成员函数如下:

Constructors创建一个新双向队列

Operators比较和赋值双向队列

assign()设置双向队列的值

at()返回指定的元素

back()返回最后一个元素

begin()返回指向第一个元素的迭代器

clear()删除所有元素

empty()返回真如果双向队列为空

end()返回指向尾部的迭代器

erase()删除一个元素

front()返回第一个元素

get_allocator()返回双向队列的配置

insert()插入一个元素到双向队列中

max_size()返回双向队列能容纳的最大元素个数

pop_back()删除尾部的元素

pop_front()删除头部的元素

push_back()在尾部加入一个元素

push_front()在头部加入一个元素

rbegin()返回指向尾部的逆向迭代器

rend()返回指向头部的逆向迭代器

resize()改变双向队列的大小

size()返回双向队列中元素的个数

swap()和另一个双向队列交换元素


 C++ STL容器deque和vector很类似,也是采用动态数组管理元素。

 使用deque之前需包含头文件

 #include <deque>

 它是定义在命名空间std内的一个class template

 template<class _Ty,

 class _Ax = allocator<_Ty> >

 class deque;

第一个template参数用来表示元素型别,第二个可有可无,指定内存模型。一般使用默认的内存模型。

与vector不同的是deque的动态数组首尾都开放,因此能够在首尾进行快速地插入和删除操作,

    deque的内部结构

    deque是一种优化了的对序列两端元素进行添加和删除操作的基本序列容器。通常由一些独立的区块组成,第一区块朝某方向扩展,最后一个区块朝另一方      向扩展。它允许较为快速地随机访问但它不像vector一样把所有对象保存在一个连续的内存块,而是多个连续的内存块。并且在一个映射结构中保存对这些块以及顺序的跟踪。

   deque的特点:

1、支持随机访问,即支持[]以及at(),但是性能没有vector好。

2、可以在内部进行插入和删除操作,但性能不及list

  deque和vector的不同之处:

1、两端都能够快速插入和删除元素。vector只能在尾端进行。

2、deque的元素存取和迭代器操作会稍微一些。因为deque的内部结构会多一个间接过程。

3、迭代器是特殊的智能指针,而不是一般指针。它需要在不同的区块之间跳转

4、deque可以包含更多的元素,其max_size可能更大。因为不止使用一块内存。

5、不支持对容量和内存分配时机的控制。

6、deque的内存区块不再被使用时,会被释放。deque的内存大小是可缩减的。不过,是不是这么做以及怎么做由实作版本定义。

  deque和vector相似的特性

1、在中间部分插入和删除元素相对较慢,因为所有元素都要被移动

2、迭代器属于随即存取迭代器。

最好采用deque的情形:

1、需要在两端插入和删除元素。

2、无需引用容器内的元素。

3、要求容器释放不再使用的元素。


  • 本站(WWW.169IT.COM)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.169IT.COM)站内文章除注明原创外,均为转载,整理或搜集自网络.欢迎任何形式的转载,转载请注明出处.
    转载请注明:文章转载自:[169IT-IT技术资讯]
    本文标题:双向队列Deque 类成员函数列表参考(c++ STL 容器)
相关文章推荐:
  • c++类库Boost::bimap(双向映射)介绍及使用实例
  • C语言双向链表 Doubly Linked List
  • JavaScript 双向数据绑定库 Way.js
  • 客户机和服务器可以双向收发数据的socket编程
  • socket双向通讯模式请教
  • C#实现https双向认证的实例代码
  • 客户端程序和服务器程序间能否通过管道来实现数据的双向传递啊?
  • 为什么linux与windows电脑连接非常慢,双向都是!
  • 如何在使用嵌入式Linux的设备中通过USB端口与PC进行双向通信
  • mysql 双向同步的键值冲突问题的解决方法分享
  • codeigniter集成ucenter1.6双向通信的解决办法
  • mysql双向加密解密方式用法详解
  • 双向数据绑定JS库 Bindable.js
  • PHP小教程之实现双向链表
  • Datagram Scoket双向通信
  • 深入多线程之:双向信号与竞赛的用法分析
  • MySQL 数据库双向镜像、循环镜像(复制)
  • 怎么实现server和client双向聊天的SOCKET,我哪错了
  • 为什么libnids只能捕获单向数据流,而不是双向的
  • python双向链表实现实例代码
  • Java语言中链表和双向链表


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2017,169IT.COM,E-mail:www_169it_com#163.com(请将#改为@)

    浙ICP备11055608号