双端队列deque比向量vector更有优势

双端队列(deque) 连续存储的指向不同元素的指针所组成的数组<deque>

队列(queue) 先进先出的值的排列 <queue>

优先队列(priority_queue) 元素的次序是由作用于所存储的值对上的某种谓词决定的的一种队列 <queue>

1 back();

返回向量中的最后一个对象

2 begin();

队列第一个元素位置

3 clear();

删除向量中的所有对象

4 end();

队列最后一个元素的下一个位置

5 erase(iterator it);

删除it所指向的容器对象

6 front();

返回向量中的第1个对象

7 insert(iterator it,const T&);

向it所指的的向量位置前插入一个对象

8 max_size();

返回向量可容纳最多对象的个数

9 pop();

出队列

10 pop_back();

删除向量中最后一个元素

11 pop_front();

删除向量中第一个元素

12 push(const T&);

入队列

13 push_back(const T&);

向向量尾部插入一个对象

14 push_front(const T&);

向向量头部插入一个对象

15 size();

返回当前向量中已经存放的对象的个数

16 swap(deque T&);

交换两个队列的元素

17 top();

取队头元素

使用队列queue,执行命令

 #include <iostream>
#include <queue> int main()
{
char *p = ;
std::queue<char *>myq; myq.push("calc");//入队列
myq.push("notepad");
myq.push("tasklist");
myq.push("mspaint"); while (!myq.empty())
{
p = myq.front();//返回向量中的第1个对象
system(p);
myq.pop();//出队列
} return ;
}

使用双端队列deque

 #include <iostream>
#include <queue> int main()
{
std::deque<int>mydq;//双端队列 mydq.push_back();//向向量尾部插入一个对象
mydq.push_back();
mydq.push_back();
mydq.push_back();
mydq.push_back(); mydq.push_front();//向向量头部插入一个对象 mydq.insert(mydq.begin() + , );//向it所指的的向量位置前插入一个对象 mydq.erase(mydq.end() - );//删除it所指向的容器对象,如果要删除最后一个元素,需要end() - 1 for (int i = ; i < mydq.size(); i++)//下标访问
{
std::cout << mydq[i] << std::endl;
}
std::cout << std::endl; auto ib = mydq.begin();
auto ie = mydq.end(); for (; ib != ie; ib++)//迭代器访问
{
std::cout << *ib << std::endl;
} mydq.pop_front();//删除向量中第一个元素
mydq.pop_back();//删除向量中最后一个元素 mydq.clear();//删除向量中的所有对象 return ;
}

交换两个队列的元素

 #include <iostream>
#include <queue> int main()
{
std::deque<int>mydq1;//双端队列1 mydq1.push_back();//向向量尾部插入一个对象
mydq1.push_back();
mydq1.push_back();
mydq1.push_back();
mydq1.push_back(); std::deque<int>mydq2;//双端队列2 mydq2.push_back();//向向量尾部插入一个对象
mydq2.push_back();
mydq2.push_back();
mydq2.push_back();
mydq2.push_back(); mydq1.swap(mydq2);//交换两个队列的元素 {
auto ib = mydq1.begin();
auto ie = mydq1.end(); for (; ib != ie; ib++)//迭代器访问
{
std::cout << *ib << std::endl;
}
} std::cout << std::endl; {
auto ib = mydq2.begin();
auto ie = mydq2.end(); for (; ib != ie; ib++)//迭代器访问
{
std::cout << *ib << std::endl;
}
} return ;
}

max_size() ;

//返回向量可容纳最多对象的个数

 #include <iostream>
#include <queue> int main()
{
std::deque<int>mydq;//双端队列 mydq.push_back();//向向量尾部插入一个对象
mydq.push_back();
mydq.push_back();
mydq.push_back();
mydq.push_back(); std::cout << mydq.max_size() << std::endl;//返回向量可容纳最多对象的个数 std::cout << mydq.front() << std::endl;//返回向量中的第1个对象
std::cout << mydq.back() << std::endl;//返回向量中的最后一个对象 return ;
}

优先队列

 #include <iostream>
#include <queue> int main()
{
std::priority_queue<int>myq;//优先队列 myq.push();
myq.push();
myq.push();
myq.push();
myq.push(); while (!myq.empty())
{
std::cout << myq.top() << std::endl;//取队头元素
myq.pop();//出队列
} return ;
}

优先队列高级用法

 #include <iostream>
#include <queue>
#include <string>
#include <vector> struct student
{
int age;
std::string name;
}; struct stuless
{
bool operator()(const student &s1, const student &s2)
{
return s1.age < s2.age;
}
}; int main()
{
std::priority_queue<student, std::vector<student>, stuless>myq;//优先队列高级用法,age为关键字进行排列 student s1;
s1.age = ;
s1.name = "hello"; student s2;
s2.age = ;
s2.name = "world"; student s3;
s3.age = ;
s3.name = "hello world"; myq.push(s1);
myq.push(s2);
myq.push(s3); while (!myq.empty())
{
std::cout << myq.top().age << " " << myq.top().name << std::endl;
myq.pop();
} return ;
}

#include <queue>的更多相关文章

  1. 浅谈JSP中include指令与include动作标识的区别

    JSP中主要包含三大指令,分别是page,include,taglib.本篇主要提及include指令. include指令使用格式:<%@ include file="文件的绝对路径 ...

  2. Entity Framework 6 Recipes 2nd Edition(13-9)译 -> 避免Include

    问题 你想不用Include()方法,立即加载一下相关的集合,并想通过EF的CodeFirst方式实现. 解决方案 假设你有一个如Figure 13-14所示的模型: Figure 13-14. A ...

  3. error RC1015: cannot open include file 'afxres.h' 解决办法

    在为WindowsPhone8程序添加本地化的过程中遇到这个问题: 问题原因就是afxres.h文件缺失,下载它,放到VS安装目录下的VS\include目录下就可以了(选择目录的时候注意对应对版本) ...

  4. Mybatis常用总结:参数,返回,执行sql,include等

    1.参数注入1.1用#{0},#{1}的形式,0代表第一个参数,1代表第二个参数 public List<RecordVo> queryList(String workerId, Inte ...

  5. jsp中的@include与jsp:include区别详解

    1 前言 搞java开发的人也许都知道在jsp中引入项目中其他文件有如下两种方式 <%@include file="xxx.jsp"%> <jsp:include ...

  6. JSP中编译指令include与动作指令include的区别

    include指令是编译阶段的指令,即include所包含的文件的内容是编译的时候插入到JSP文件中,JSP引擎在判断JSP页面未被修改, 否则视为已被修改.由于被包含的文件是在编译时才插入的,因此如 ...

  7. C/C++ 中的include

    当需要使用已有的方法或库时, 可以将它们的头文件#include进来. #include会在preprocess过程中被替换成它包含的代码. 头文件中包含了需要使用的函数/变量的声明. 当然声明与定义 ...

  8. 织梦多语言站点,{dede:include filename=''/}引入问题

    织梦模板include插入非模板目录文件出现"无法在这个位置找到"错误的解决办法 以下是dede V55_UTF8 查dede include标签手册 (3) include 引入 ...

  9. PHP 站点相对包含,路径的问题解决方法(include,require)

    以前看了,很多框架,基本上很少使用相对路径包含.而一般很多做php web站点,喜欢用相对路径. 认为这样,无论目录放到那里. 只要跟另外目录关系一致.那么就不会出现问题.如果一个站点,一般都认为,如 ...

  10. 如何让include标签包裹的布局置于屏幕最下方?

    如何让一个Layout 始终在屏幕的下方 我想让<include layout="@layout/bottom" />一直在屏幕下,怎么做? 1.相对布局中用属性  a ...

随机推荐

  1. Word Ladder II 解答

    Question Given two words (beginWord and endWord), and a dictionary's word list, find all shortest tr ...

  2. ZOJ2913Bus Pass(BFS+set)

    Bus Pass Time Limit: 5 Seconds      Memory Limit: 32768 KB You travel a lot by bus and the costs of ...

  3. 监控父元素里面子元素内容变化 DOMSubtreeModified

    1监控ul的li的变化情况,并实时输出li的长度 布局: <ul id="isSelected"></ul> <span id="modal ...

  4. Js 中常用方法

    一.获取唯一值(2014-12-23) function newGuid() { var guid = ""; var n = (((1 + Math.random()) * 0x ...

  5. TRIZ系列-创新原理-32-改变颜色原理

    改变颜色原理的详细描写叙述例如以下:1)改变物体或其环境的颜色:2)改变物体或其环境的透明度:3)对于难以看到的物体或过程.使用颜色加入剂来观測.4)假设已经使用了这样的加入剂,那么使用发光跟踪或原子 ...

  6. linux下Mysql 的安装、配置、数据导入导出

    MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),虽然功能未必很强大,但因它的免费开源而广受欢迎. 这次,接着上一篇<CentOs minimal安装和开发环境部署>,讲下L ...

  7. linux系统如何限制其他用户登录

    用root 用户登录到系统排查问题,这个时候不希望别的账户登录到系统,你如何处理? vim /etc/nologin 将账号添加到此文件中去,你会发现其他用户都无法登录,报错信息如下:即连接即中断.

  8. SFTP CONFIGURATION IN FLASHFXP PROGRAM

    This is a brief guide on how to configure the FlashFXP FTP client to log on to the domain web space ...

  9. 【转】SSIS 2012 – Package Configurations Menu Option Missing

    原文:http://dataqueen.unlimitedviz.com/2012/01/ssis-2012-package-configurations-menu-option-missing/ I ...

  10. XPath语法 在C#中使用XPath示例

    XPath可以快速定位到Xml中的节点或者属性.XPath语法很简单,但是强大够用,它也是使用xslt的基础知识. 示例Xml: <?xml version="1.0" en ...