双端队列容器是一种放松了访问权限的队列。除了从队列的首部和尾部访问元素外,标准的双端队列也支持通过使用下标操作符"[]"进行直接访问。

它提供了直接访问和顺序访问方法。其头文件为<deque>。

1)双端队列容器的构造函数

有4中形式的构造函数:

deque();//构造size()为0的双端队列容器

deque(size_type n,const T& v=T());//初始化大小为n的双端队列,第二个参数是每个元素的初始值,默认为T()构造的对象

deque(const deque& x);//拷贝构造函数,用双端队列x来初始化此双端队列容器

deque(const_iterator first,const_iterator last);//从另一个支持const_iterator的容器中选取一部分来建立一个新的双端队列容器。

2)使用双端队列容器

a、访问双端队列容器信息

对于双端队列容器,

size()返回双端队列容器中元素的个数;

max_size()返回双端队列容器中最多可以容纳元素的个数;

empty()当双端队列中没有元素时,则返回true

b、向双端队列容器中放置元素

有以下方法可以把元素放入双端队列容器中:构造函数、push_back()方法、insert()方法、[]运算符、=运算符、swap函数。还有push_front函数,其原型为:

void push_front(const T& x);//将元素x添加在双端队列容器头部

c、删除双端队列容器中的元素

使用pop_back()、pop_front()、erase()、clear()可以从双端队列中删除元素,与向量容器相比,多了一个pop_front()函数,其原型:

void pop_front();//删除双端队列容器中的最前端元素

d、访问双端队列容器中的元素

双端队列容器即可以顺序访问也可以直接访问。双端队列容器中的元素可以联合使用pop_front()、pop_back()、front()、back()成员函数进行顺序访问,也可以使用迭代器来顺序遍历双端队列。由于支持随机访问迭代器,所以可以进行随机访问。

e、例子

使用双端队列容器保存双精度数值序列

#include<iostream>
#include<deque>  //包含双端队列容器头文件
#include<algorithm>//包含算法头文件
#include<iterator>
using namespace std;
int main()
{
 deque<double> values;//声明一个双精度型deque序列容器
 ostream_iterator<double> output(cout," ");
 values.push_front(2.2);//应用函数push_front在deque容器开头插入元素
 values.push_front(3.5);
 values.push_back(1.1);//应用函数push_back在deque同期结尾插入元素
 cout << "values contains:";
 for (int i = 0; i < values.size(); ++i)
  cout << values[i] << ' ';
 values.pop_front();//应用函数push_front从deque容器中删除第一个元素
 cout << "\nafter pop_front values contains:";
 copy(values.begin(),values.end(),output);
 values[1] = 5.4;//用用操作符[]来重新赋值
 cout << "\nafter values[1]=5.4 values contains:";
 copy(values.begin(), values.end(), output);
 getchar();
 cout << endl;
}

8、泛型程序设计与c++标准模板库2.3双端队列容器的更多相关文章

  1. 8、泛型程序设计与c++标准模板库1、泛型程序设计的概念和术语

    有效地利用已有的成果,将经典的.优秀的算法标准化.模块化,从而提高软件的生产率,是软件产业化的需求,为了实现这一需求,不仅需要面向对象设计思想,而且需要泛型程序设计思想. c++语言提供的标准模板库( ...

  2. 8、泛型程序设计与c++标准模板库2、c++标准模板库中的容器

    顺序容器类以逻辑线性排列方式存储元素,在这些容器类型中的元素在逻辑上被认为是连续的存储空间中存储的.顺序容器可用于存储线性群体. 在关联容器类中,元素的存储和检索基于关键字和元素与其他元素之间的关系, ...

  3. 8、泛型程序设计与c++标准模板库4.标准c++库中的算法

    标准c++算法是通过迭代器和模板来实现的,其实算法本身就是一种函数模板. 算法从迭代器那里获得一个元素,而迭代器则知道一个元素在容器中的什么位置.迭代器查找元素的位置并将这些信息提供给算法以便算法能够 ...

  4. C++学习笔记53:泛型程序设计与C++标准模板库

    泛型程序设计的基本概念 编写不依赖于具体数据类型的程序 将算法从特定的数据结构中抽象出来,成为通用的 C++模板为泛型编程程序设计奠定了关键的基础 模型:符合一个概念的数据类型称为该概念的模型,例如: ...

  5. 8、泛型程序设计与c++标准模板库2.5容器适配器

    容器适配器是用来扩展7中基本容器的,是修改和调整其他类接口的类.他们不提供存放数据的实际数据结构的实现方法,而且容器适配器也不支持迭代器. 1.标准栈容器 使用STL中的标准栈为程序员提供了一层附加的 ...

  6. 8、泛型程序设计与c++标准模板库5.函数对象

    1.函数对象 函数对象是STL提供的第四类主要组件,它使得STL的应用更加灵活方便,从而增强了算法的通用性.大多数STL算法可以用一个函数对象作为参数.所谓“函数对象”其实就是一个行为类似函数的对象, ...

  7. 8、泛型程序设计与c++标准模板库3.迭代器

    理解迭代器对于理解STL框架并掌握STL的使用至关重要.简单地说,迭代器是面向对象版本的指针,STL算法利用迭代器对存储在容器中的元素序列进行遍历,迭代器提供了访问容器和序列中每个元素的方法. 虽然指 ...

  8. 8、泛型程序设计与c++标准模板库2.2向量容器

    向量容器属于顺序容器,用于容纳不定长线性序列(即线性群体),提供对序列的快速随机访问(也称直接访问).这一点与c++语言支持的基本数组类型相同,但基本数据类型不是面向对象的.而面向对象的向量是动态结构 ...

  9. 第十章 泛型程序设计与C++标准模板库 泛型程序设计及STL的结构

随机推荐

  1. mysql 历史数据表迁移方案

    当业务运行一段时间后,会出现有些表数据量很大,可能对系统性能产生不良的影响,常见的如订单表.登录log表等,这些数据很有时效性,比如我们一般很少去查上个月的订单,最多也就是报表统计会涉及到. 在我们的 ...

  2. P4773 红鲤鱼与绿鲤鱼

    P4773 红鲤鱼与绿鲤鱼 暑假比赛的一个水题 总情况数:\(\dfrac{(a+b)!}{a!b!}\) 就是\(a+b\)条鲤鱼中选\(a\) or \(b\)的情况 反正我们会用完鲤鱼,则红鲤鱼 ...

  3. android电池(四):电池 电量计(MAX17040)驱动分析篇【转】

    本文转载自:http://blog.csdn.net/xubin341719/article/details/8969369 电池电量计,库仑计,用max17040这颗电量IC去计量电池电量,这种方法 ...

  4. Jquery的load()

    我一直认为jquery的load函数是以GET方式请求另一个文件并加载到当前DOM里的.当我带参数加载一个ASP脚本时是这样做: $("#showData").load(" ...

  5. 关于spring事务注解

    关于事务的注解常用如下1.如果有事务, 那么加入事务, 没有的话新建一个(默认情况下),也就是当我们要开启事务的时候才用,即有数据库有增删改操作@Transactional(rollbackFor=E ...

  6. Delphi中TList类应用

    在DELPHI中指针最常见的就是和类TLIST结合起来使用.下面是一个很简单的例子,希望对这个例子的分析能让大家对使用TLIST类有一个简单的认识. 代码的功能是使用指针和Tlist来生成一个牌串,并 ...

  7. Java企业微信开发_00_源码及资源汇总贴

    一.源码 此系列教程的源码我都放在了github上,欢迎fork以及关注. 传送门:https://github.com/shirayner/WeiXin_QiYe_Demo/tree/master ...

  8. chrome浏览器的跨域设置-包括版本49前后两种设置 ,windows&mac

    做前后分离的webapp开发的时候,出于一些原因往往需要将浏览器设置成支持跨域的模式,好在chrome浏览器就是支持可跨域的设置,网上也有很多chrome跨域设置教程.但是新版本的chrome浏览器提 ...

  9. linux下导入导出oracle的dmp文件

    1.导出dmp件 命令:exp QGTG/\"QGTG@orcl\" file=/usr/fuck.dmp exp QGTG/\"QGTG@orcl\" fil ...

  10. L2-016 愿天下有情人都是失散多年的兄妹(25 分)

    呵呵.大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人.父母.祖父母.曾祖父母.高祖父母)则不可通婚.本题就请你帮助一对有情人判断一下,他们究竟是否可以成婚? 输入格式: 输入 ...