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. jdk1.7

    http://download.oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-windows-i586.exe?AuthParam=1450748157_ ...

  2. 使用OC语言编写两个超大数相乘或相加的算法的思路和超大正整数相乘的代码

    正文: 在编程中,无论是OC还是C亦或是C++语言,所声明的整数变量都会在内存中占有固定的存储空间,而这些存储空间都是固定的. 比如我们知道的int.long.short.unsigend int.u ...

  3. MySQL数据库表名、列名、别名区分大小写的问题

    MySQL在Linux下数据库名.表名.列名.别名大小写规则是这样的: 1.数据库名与表名是严格区分大小写的: 2.表的别名是严格区分大小写的: 3.列名与列的别名在所有的情况下均是忽略大小写的: 4 ...

  4. 【转】 class 和 struct 区别

    转载来源:http://blog.sina.com.cn/s/blog_48f587a80100k630.html C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据 ...

  5. Fiddler-007-修改HTTP请求响应数据

    前文简述了如何通过 Fiddler 修改 HTTP请求 的请求参数,详情请参阅:Fiddler-006-修改HTTP请求参数. 在进行 App 测试时,经常需要修改请求参数,以获得不同的显示效果,以查 ...

  6. Java Main Differences between Java and C++

    转载自:http://www.cnblogs.com/springfor/p/4036739.html C++ supports pointers whereas Java does not. But ...

  7. eclipse中tomcat能正常启动,但是浏览器访问不了tomcat首页

    在eclipse中新建tomcat7,完成后tomcat能够正常启动,但是浏览器问题localhost:8080访问不了. 解决方法如下: 双击eclipse中服务器中的tomcat 出现tomcat ...

  8. sdut2169:Sequence(dp)

    题目:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2169 #include <iost ...

  9. javascript [] 与 {} 的区别

    []是数组形式,{}是对象形式,都可以包含其他类型.如var a= ["A","B",{a:1,b:2}];a[1] 取得的是B,a[2].b取得的是2;var ...

  10. [QT]抄—影像显示实验

    QtCreator新建一个Qt Application,命名为ImageView 在项目文件夹下添加gdal库,统一放在ImageView\gdal目录下. 右键单击项目,选择添加库命令,添加gdal ...