转自:https://www.cnblogs.com/grhyxzc/p/5074061.html

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++之路起航——标准模板库(queue)

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

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

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

  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)学习指南之List链表

    本文转载自天极网,原文地址:http://www.yesky.com/255/1910755.shtml.转载请注明 什么是STL呢?STL就是Standard Template Library,标准 ...

  8. C++ STL(标准模板库)的学习了解

    C++ STL(标准模板库)是一套功能强大的 C++ 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构,如向量.链表.队列.栈. C++ 标准模板库的核心包括以 ...

  9. std(标准库)和STL(标准模板库)的关系

    C++标准库的内容分为10类: C1.语言支持 C2.输入/输出 C3.诊断 C4.一般工具 C5.字符串 C6.容器 C7.迭代器支持 C8.算法 C9.数值操作 C10.本地化: 下面分类详解: ...

随机推荐

  1. 本地上传文件至服务器的技巧(linux文件压缩及解压文件)

    linux(ubuntu)文件解压及压缩文件 ubuntu支持文件的解压及压缩功能, 如果ubuntu上面没有安装过unzip工具的话,可以通过下面命令安装: sudo apt-get install ...

  2. eclipse测试链接sql server2008 数据库

    注:在测试连接数据库之前必须保证SQL Server 2008是采用SQL Server身份验证方式而不是windows身份验证方式.如果在安装时选用了后者,则需要重新进行配置. 首先 使用命令行测试 ...

  3. ubuntu安装notepad++

    sudo add-apt-repository ppa:notepadqq-team/notepadqq sudo apt-get update sudo apt-get install notepa ...

  4. python----运行机制

    Python 是一门解释型的编程语言,因此它具有解释型语言的运行机制. 计算机程序,其实就是一组计算机指令集,能真正驱动机器运行的是机器指令,但让普通开发者直接编写机器指令是不现实的,因此就出现了计算 ...

  5. Socket 的网络编程

    socket 网络编程的服务端: 1) 创建socket 套接字. 2) 和socket绑定主机地址和端口 3) socket 主动监听端口,看又没有来连接. 4) 当执行到 accept() 时, ...

  6. linux命令: 两个查找工具 locate,find

    linux 中有很多查找工具,今天主要讲解locate,find两个工具. 1.locate (1)查询系统上预建的文件索引数据库 /var/lib/mlocate/mlocate.db 注意:如果这 ...

  7. Spring的bean管理(注解方式)

    注解:代码中的特殊标记,注解可以使用在类.方法.属性上面,使用注解可实现一些基本的功能.注解的写法是@注解名称(属性=属性值). 使用注解创建对象 第一步,创建Web项目,引入Spring的开发包 第 ...

  8. 高性能Nginx服务器-负载均衡

    Location正则表达式 location的作用 location指令的作用是根据用户请求的URI来执行不同的应用,也就是根据用户请求的网站URL进行匹配,匹配成功即进行相关的操作. locatio ...

  9. bootstrap 下拉菜单自动向上向下弹起

    .别人的解决方案 2.别人的解决方案 3.我哒 div class="btn-group" style="margin-top:500px;" > < ...

  10. 本地node启动服务步骤

    启动node服务: 1.git bash here (node server-run.js) 2.如果第一次启动node服务,要根据提示装依赖文件npm install 依赖文件名 3.启动成功提示: ...