转自: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. 设置头像、商品、轮播图为背景图时需要的css

    background-repeat: no-repeat;background-size: cover;background-position: center center;

  2. 前端自动化构建工具webpack (二)之css和插件加载总结

    1.  webpack只识别js文件,其他文件都需要转换成js文件.所有文件都是模块; 2. css解析      css需要css-loader  --->style-loader ----- ...

  3. Navicat导入sql server数据库

    1.新建连接 2. EXEC sp_attach_db @dbname = 'demo',   (数据库的名字) @filename1 = 'G:\C#\超市管理系统\DB\CSGL.mdf', @f ...

  4. vue2.0 vs vue

    vue2.0相比vue1.0 有哪些改变,今天总结了一下 vue2.0组件中 template 不在支持代码片段 //vue1.0组件中template写法 <template> < ...

  5. Codeforces 1062 - A/B/C/D/E - (Undone)

    链接:http://codeforces.com/contest/1062 A - Prank - [二分] 题意: 给出长度为 $n(1 \le n \le 100)$ 的数组 $a[1 \sim ...

  6. loj2876 水壶 [JOISC 2014 Day2] kruscal重构树

    正解:kruscal重构树+bfs 解题报告: 我永远喜欢loj! 感觉这题和这题挺像的,,,预处理和解题方法都是,,,所以大概整体二分能过去? 但因为做这题主要是入门一下kruscal重构树,,,所 ...

  7. 检测到包降级: Microsoft.Extensions.Configuration.Abstractions 从 2.1.1 降 2.1.0

    解决方法:工具-nuget管理包-程序管理控制台-选择 项目- 执行 -Install-Package Microsoft.Extensions.Configuration.Abstractions ...

  8. java框架之MyBatis(1)-入门&动态代理开发

    前言 学MyBatis的原因 1.目前最主流的持久层框架为 Hibernate 与 MyBatis,而且国内公司目前使用 Mybatis 的要比 Hibernate 要多. 2.Hibernate 学 ...

  9. pycharm的简介

    pycharm使用 集成开发环境(IDE,Integrated Development Environment ) VIM #经典的linux下的文本编辑器 Emacs #linux 文本编辑器, 比 ...

  10. CDN和智能DNS原理和应用 (原)

    CDN是什么? CDN的全称是Content Delivery Network,即内容分发网络. CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡.内容分发.调 ...