//双向队列 deque
#include <deque>
#include <cstdio>
#include <algorithm>
using namespace std;
int main()
{
deque<int> ideq(20);//Create a deque ideq with 20 elements of default value 0
deque<int>::iterator pos;
int i; for (i = 0; i < 20; ++i)//一开始它们的初值都是0
printf("%d ", ideq[i]);
putchar('\n'); //使用assign()赋值 assign在计算机中就是赋值的意思
for (i = 0; i < 20; ++i)
ideq[i] = i; //输出deque
printf("输出deque中数据:\n");
for (i = 0; i < 20; ++i)
printf("%d ", ideq[i]);
putchar('\n'); //在头尾加入新数据
printf("\n在头尾加入新数据...\n");
ideq.push_back(100);
ideq.push_front(i); //输出deque
printf("\n输出deque中数据:\n");
for (pos = ideq.begin(); pos != ideq.end(); pos++)
printf("%d ", *pos);
putchar('\n'); //查找
const int FINDNUMBER = 19;
printf("\n查找%d\n", FINDNUMBER);
pos = find(ideq.begin(), ideq.end(), FINDNUMBER);
if (pos != ideq.end())
printf("find %d success\n", *pos);
else
printf("find failed\n"); //在头尾删除数据
printf("\n在头尾删除数据...\n");
ideq.pop_back();
ideq.pop_front(); //输出deque
printf("\n输出deque中数据:\n");
for (pos = ideq.begin(); pos != ideq.end(); pos++)
printf("%d ", *pos);
putchar('\n');
return 0;
}

以上代码是一个演示qwq;

deque双向队列是一种双向开口的连续线性空间,可以高效的在头尾两端插入和删除元素,deque在接口上和vector非常相似,下面就总结一下deque的常用成员函数:

(本人技术水平比较差,列不全请见谅qwq)

这是基础操作:

deque<int> c(); //建立一个int类型的有20位的双向队列

c.front() //返回该双向队列的第一个数据

c.back() //返回该双向队列的最后一个数据

c.empty()  //判断该循环队列是否为空

c.maxsize()  //返回循环队列中最大数据的数量

c.size()   //返回循环队列实际元素的个数

c.begin()   //这是指向该双向队列第一个数据的迭代器

c.end()   //这是指向该双向队列最后一个数据的迭代器

c.rbegin() //指向逆向队列的第一个数据

c1.swap(c2)    //将c1与c2的元素互换
swap(c1,c2) //同上 c.rend() //指向逆向队列最后一个位置的下一个位置的迭代器

这是添加操作:

c.push_front()   //在头部插入一个数据

c.push_back()   //在尾部插入一个数据

c.insert(pos,x)   //在pos位置插入一个x的拷贝,并返回新数据的位置

c.insert(pos,begin,end)   //在pos位置插入在[begin,end)之间的数据,无返回值

c.pop_back()  //删除最后一个数据

c.pop_front()  //删除第一个数据

c.erase(pos)   //删除pos位置的数据,并返回下一个位置的迭代器

x.erase(begin,end)  //删除[begin,end)区间的数据,返回下一个数据的位置

但是不知道是什么玄学原因,deque的随机访问和遍历数据相比而言会比vector慢一些;

但是我不会呐qwq,因为我弱qwq。

好哒,写完撒花(qwq)

STL之双向队列(dequeue)的更多相关文章

  1. 看动画学算法之:双向队列dequeue

    目录 简介 双向队列的实现 双向队列的数组实现 双向队列的动态数组实现 双向队列的链表实现 双向链表的时间复杂度 简介 dequeue指的是双向队列,可以分别从队列的头部插入和获取数据,也可以从队列的 ...

  2. stl中双向队列用法

    双向队列的操作如下: d[i]:返回d中下标为I的元素的引用. d.front():返回的一个元素的引用. d.back():返回最后一个元素的引用. d.pop_back():删除尾部的元素.不返回 ...

  3. STL --> deque双向队列

    deque简介 deque是双向开口的连续性存储空间.虽说是连续性存储空间,但这种连续性只是表面上的,实际上它的内存是动态分配的,它在堆上分配了一块一块的动态储存区,每一块动态存储去本身是连续的,de ...

  4. STL之deque双向队列

    deque双向队列是一种双向开口的连续线性空间,可以高效的在头尾两端插入和删除元素,提供随机访问,deque在接口上和vector非常相似,下面列出deque的常用成员函数: Table 6.9. C ...

  5. 双向队列 STL

    题目描述 想想双向链表……双向队列的定义差不多,也就是说一个队列的队尾同时也是队首:两头都可以做出队,入队的操作.现在给你一系列的操作,请输出最后队列的状态:命令格式:LIN X  X表示一个整数,命 ...

  6. STL之deque(双向队列)

    deque双向队列是一种双向开口的连续线性空间,可以高效的在头尾两端插入和删除元素,deque在接口上和vector非常相似,下面列出deque的常用成员函数: deque在vector函数的基础上增 ...

  7. 双向队列(STL做法)

    双向队列 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描写叙述 想想双向链表--双向队列的定义差点儿相同,也就是说一个队列的队尾同一 ...

  8. 队列(Queue)--环形队列、优先队列和双向队列

    1. 队列概述 队列和堆栈都是有序列表,属于抽象型数据类型(ADT),所有加入和删除的动作都发生在不同的两端,并符合First In, First Out(先进先出)的特性. 特性: ·FIFO ·拥 ...

  9. deque双向队列(转)

    deque双向队列是一种双向开口的连续线性空间,可以高效的在头尾两端插入和删除元素,deque在接口上和vector非常相似,下面列出deque的常用成员函数:   deque的实现比较复杂,内部会维 ...

随机推荐

  1. tidb 架构 ~Tidb学习系列(3)

    tidb集群安装测试1 环境 3台机器2 配置   server1 pd服务+tidb-server   server2 tidb-kv   server3 tidb-kv3 环境配置命令   ser ...

  2. saltstack系列~第二篇

    一 简介:今天咱们来继续学习saltstack 二 命名和分组 1 命名规则 1 ID构成 机房-DB类型-角色(主/从)-IP地址 2 分组构成  分为master slave两组即可 2 分组规则 ...

  3. JS实现随机背景图片与图片大小变换的效果

    经常在网上见一些网站访问一次背景图片改变一次,而且图片的大小不停变换,于是想着自己研究一下. 背景图片可以通过JS的随机数来改变图片的src来实现随机图片,图片的大小变换可以用JS的setInterv ...

  4. nodejs对mongodb数据库的增删改查操作(转载)

    首先要确保mongodb的正确安装,安装参照:http://docs.mongodb.org/manual/tutorial/install-mongodb-on-debian-or-ubuntu-l ...

  5. 【Shell】获取当前路径

    bathpath=$(cd dirname $0 ; pwd)

  6. Node.jsでMySQLを使うメモ

    インストール npm install mysql コネクション var mysql = require('mysql'); var connection = mysql.createConnectio ...

  7. SharePoint 2013 文档库“样式”变了

    有朋友反馈说文档库的样式变了. 经查证,原来有人修改了视图的"样式":库设置—视图—样式,改为默认即可. 另外,如果编辑页面,编辑web部件的属性,在"杂项"勾 ...

  8. quart源码阅读(一)

    def run( self,host: str='127.0.0.1',port: int=5000,ssl: Optional[SSLContext]=None,debug: Optional[bo ...

  9. 内存分配方式,堆区,栈区,new/delete/malloc/free

    1.内存分配方式 内存分配方式有三种: [1]从静态存储区域分配.内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量,static变量. [2]在栈上创建.在执行函数时 ...

  10. iOS中按钮点击事件处理方式

    写在前面 在iOS开发中,时常会用到按钮,通过按钮的点击来完成界面的跳转等功能.按钮事件的实现方式有多种,其中 较为常用的是目标-动作对模式.但这种方式使得view与controller之间的耦合程度 ...