deque(双端队列):http://baike.baidu.com/link?url=JTvA2cuLubptctHZwFxswvlZvxNdFOxmifsYCGLj5IZF-Tj4rbWLv8JnkqWbA9s2S-9Xzqdo37vcdkBQZfORNq

需要包括头文件<deque>;

定义:

deque<数据类型> 变量名;

Eg:

deque<int> que;//定义了一个整型的双端队列;

基本操作(红色标识为常用操作):

       que.assign(beg,end) 将[beg; end)区间中的数据赋值给que。
       que.assign(n,elem) 将n个elem的拷贝赋值给que。
       que. at(idx) 传回索引idx所指的数据,如果idx越界,抛出out_of_range。
       que.back() 返回容器que的最后一个元素的引用。如果que为空,则该操作未定义。
       que.begin() 传回迭代器中的第一个数据地址。
       que.clear() 移除容器中所有数据。
       que.empty() 判断容器是否为空。
       que.end() 返回一个迭代器,它指向容器que的最后一个元素的下一位置。
       que.erase(pos) 删除pos位置的数据,传回下一个数据的位置。
       que.erase(beg,end) 删除[beg,end)区间的数据,传回下一个数据的位置。
       que.front() 返回容器que的第一个元素的引用。如果que为空,则该操作为空。
       que.insert(pos,elem) 在pos位置插入一个elem拷贝,传回新数据位置
       que.insert(pos,n,elem) 在pos(迭代器)位置插入>n个elem数据。无返回值
 
       que.insert(pos,beg,end) 在pos位置插入在[beg,end)区间的数据。无返回值
       que.max_size() 返回容器que可容纳的最多元素个数。
       que.pop_back() 删除最后一个数据。
       que.pop_front() 删除头部数据。
       que.push_back(elem) 在尾部加入一个数据。
       que.push_front(elem) 在头部插入一个数据。
       que.rbegin() 返回一个逆序迭代器,它指向容器que的最后一个元素。
       que.rend() 返回一个逆序迭代器,它指向容器que的第一个元素的前一个位置。
       que.resize(num) 重新指定队列的长度。
       que.size() 返回容器中实际数据的个数。
       que.swap(que2) 交换容器que和que2中的所有元素。
       swap(que1,que2) 交换容器que1和que2中的所有元素。
     代码解释:

#include<iostream>
#include<cstdio>
#include<deque>

using namespace std;

int main()
{
deque <int> que;
que.push_back(1);
que.push_back(2);
que.push_back(3);
cout<<"基本操作:"<<endl;
cout<<"队列遍历:"<<endl;
deque<int>::iterator ator;
for (ator=que.begin();ator!=que.end();ator++)
cout<<*ator<<endl;
int a;
cout<<"队首插入元素:";
cin>>a;
que.push_front(a);
cout<<"队列遍历:"<<endl;
for (ator=que.begin();ator!=que.end();ator++)
cout<<*ator<<endl;
cout<<"队尾插入元素:";
cin>>a;
que.push_back(a);
cout<<"队列遍历:"<<endl;
for (ator=que.begin();ator!=que.end();ator++)
cout<<*ator<<endl;
cout<<"中间插入元素:";
cin>>a;
que.insert(que.begin()+1/*迭代器位置,根据要求更改*/,1,a);//第一个位置为迭代器位置,该程序插入的为在首位置之后、第一个元素之前插入。元素标号从第0个开始。
cout<<"队列遍历:"<<endl;
for (ator=que.begin();ator!=que.end();ator++)
cout<<*ator<<endl;
cout<<"删除队首元素:"<<endl;
que.pop_front();
cout<<"队列遍历:"<<endl;
for (ator=que.begin();ator!=que.end();ator++)
cout<<*ator<<endl;
cout<<"删除队尾元素:"<<endl;
que.pop_back();
cout<<"队列遍历:"<<endl;
for (ator=que.begin();ator!=que.end();ator++)
cout<<*ator<<endl;
cout<<"队列元素个数:"<<que.size()<<endl;
cout<<"队列清0:"<<endl;
que.clear();
cout<<"队列元素个数:"<<que.size()<<endl;
return 0;
}

C++之路起航——标准模板库(deque)的更多相关文章

  1. C++之路起航——标准模板库(vector)

    vector(动态数组或向量):动态分配内存空间的线性储存结构. 需要包括头文件<vector> 定义: vector<数据类型> 变量名: Eg: vector<int ...

  2. [转载]C++之路起航——标准模板库(deque)

    转自:https://www.cnblogs.com/grhyxzc/p/5074061.html deque(双端队列):http://baike.baidu.com/link?url=JTvA2c ...

  3. C++之路起航——标准模板库(queue)

    queue: FIFO队列:先进先出队列. 优先队列:对队列中的元素按优先级的大小输出. 定义: FIFO队列: queue<数据类性>变量名. 优先队列:priority_queue&l ...

  4. C++之路起航——标准模板库(set)

    set(集合):http://baike.baidu.com/link?url=cb68AB-3qfEK8RoaGHJFClb4ZiWpJfc32lPOLtaNUrdxntFC738zCZsCiUlf ...

  5. C++之路起航——标准模板库(list)

    list(链表):http://baike.baidu.com/link?url=gkVdBlHEzy6ssrgT5Iy2wze4jl37ka1G45TRpUHrQSYFZQg2HimtUCePV0t ...

  6. 标准模板库(STL)学习指南之sort排序

    对于程序员来说,数据结构是必修的一门课.从查找到排序,从链表到二叉树,几乎所有的算法和原理都需要理解,理解不了也要死记硬背下来.幸运的是这些理论都已经比较成熟,算法也基本固定下来,不需要你再去花费心思 ...

  7. STL标准模板库(简介)

    标准模板库(STL,Standard Template Library)是C++标准库的重要组成部分,包含了诸多在计算机科学领域里所常见的基本数据结构和基本算法,为广大C++程序员提供了一个可扩展的应 ...

  8. 【转】C++标准库和标准模板库

    C++强大的功能来源于其丰富的类库及库函数资源.C++标准库的内容总共在50个标准头文件中定义.在C++开发中,要尽可能地利用标准库完成.这样做的直接好处包括:(1)成本:已经作为标准提供,何苦再花费 ...

  9. STL标准模板库介绍

    1. STL介绍 标准模板库STL是当今每个从事C++编程的人需要掌握的技术,所有很有必要总结下 本文将介绍STL并探讨它的三个主要概念:容器.迭代器.算法. STL的最大特点就是: 数据结构和算法的 ...

随机推荐

  1. android imageButton 点击按钮前中后,按钮颜色的变化

    我们在开发的过程中,往往为了美化界面的需要,会修改按钮的默认外观,而因为Android中的按钮有三种状态—默认,被点击,被选中.所以,如果要改变按钮的外观,需要对这三种情况都做出修改,也许在以往,我们 ...

  2. Android高级之第十一讲Hybird开发

    本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 随着移动端应用平台的兴起,需求和交互方式的多样化,H5开发逐渐在移动端流行起来:常见的移动产品有We ...

  3. 【摘自网络】陈奕迅&&杨千嬅

    揭陈奕迅杨千嬅相爱18年恋人未满的点滴片段 文/一床情书 但凡未得到,但凡是过去,总是最登对 ——题记 已经仙逝多年的香港歌坛天后梅艳芳曾经在<似是故人来>里唱道:“但凡未得到,但凡是过去 ...

  4. asp.net实现关闭当前网页

    asp.net实现关闭当前网页功能:Response.Write("<script>window.close();</script>");// 会弹出询问是 ...

  5. 使用多种客户端消费WCF RestFul服务(四)——Jquery篇

    Jquery篇 互联网开发中少不了各类前端开发框架,其中JQUERY就是最流行之一,本篇我们就采用JQUERY来消费WCF RestFul服务,其中用到JSON基础知识,如果有想了解的朋友,请访问:& ...

  6. jQuery获取自身HTML

    <html><head> <title>jQuery获取自身HTML</title> <meta http-equiv="Content ...

  7. 解决.Net设置只读、隐藏后后台获取不到值的问题

    在前台页面上放了几个textbox,用 ReadOnly=true设置不可编辑,用visible="False"设置不可见 用jquery给textbox赋值后在后台页面获取不到t ...

  8. [转]AppCompat 22.1,Goole暴走,MD全面兼容低版本

    AppCompat 22.1,Goole暴走,MD全面兼容低版本 分类: Android2015-04-24 09:48 1354人阅读 评论(0) 收藏 举报 android   目录(?)[+] ...

  9. C语言:通过指针对数组元素进行排序

    // //  main.c //  Pointer_array // //  Created by ma c on 15/8/2. //  Copyright (c) 2015年 bjsxt. All ...

  10. 浅析 Linux 初始化 init 系统,第 1 部分: sysvinit 第 2 部分: UpStart 第 3 部分: Systemd

    浅析 Linux 初始化 init 系统,第 1 部分: sysvinit  第 2 部分: UpStart 第 3 部分: Systemd http://www.ibm.com/developerw ...