双端队列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. codecomb 2092【课程选择】

    题目描述 大学选课总是烦恼着很多人.现在X同学选出了很多备选课,但是有的课程之间是有时间冲突的.X不会分身,自然无法在同一个时间上不同的课.每个课可能有很多备选时间,但是每个课只需要选一个时间上就可以 ...

  2. 回归分析:非线性nlinfi

    今天测试.这首题,真的很头疼,第一次看到这个题,就知道要用nlinefit函数做,但是我一个地方没搞清楚, 花了我40多分钟还没做也来. 最后终于是调用的函数出错了.主要是没有将一个列抽出来.一个二维 ...

  3. Can you find it? 分类: 二分查找 2015-06-10 19:55 5人阅读 评论(0) 收藏

    Description Give you three sequences of numbers A, B, C, then we give you a number X. Now you need t ...

  4. 【转】通过 ulimit 改善系统性能

    概述 系统性能一直是一个受关注的话题,如何通过最简单的设置来实现最有效的性能调优,如何在有限资源的条件下保证程序的运作,ulimit 是我们在处理这些问题时,经常使用的一种简单手段.ulimit 是一 ...

  5. 【转】Android LCD(三):Samsung LCD接口篇

    关键词:android LCD控制器 Framebuffer PWM  平台信息:内核:linux2.6/linux3.0系统:android/android4.0 平台:samsung exynos ...

  6. 用c++语言编写函数 int index(char *s,char * t),返回字符串t在字符串s中出现的最左边的位置,如果s中没有与t匹配的子串,则返回-1。类似于索引的功能。

    首先,分析一下程序的思路: 1:从s的第i个元素开始,与t中的第1个元素匹配,如果相等,则将s的第i+1元素与t中的第2个元素匹配,以此类推,如果t所有元素都匹配,则返回位置i;否则,执行2; 2: ...

  7. 部分和问题(dfs)

    部分和问题 时间限制:1000 ms  |           内存限制:65535 KB 难度:2   描述 给定整数a1.a2........an,判断是否可以从中选出若干数,使它们的和恰好为K. ...

  8. H5单页面架构:requirejs + angular + angular-route

    说到项目架构,往往要考虑很多方面: 方便.例如使用jquery,必然比没有使用jquery方便很多,所以大部分网站都接入类似的库: 性能优化.包括加载速度.渲染效率: 代码管理.大型项目需要考虑代码的 ...

  9. python3 module中__init__.py的需要注意的地方

    网上关于__init__.py的作用的资料到处都是,我在此就不再啰嗦哪些了. 若有需要.请各位看官去搜搜即可. 最近刚开始用Python3 就遇到了这个比较有意思的事情 闲言少叙,下面要介绍的是pyt ...

  10. 修改vim中的tab为4个空格

    记录一下,避免用时还得搜........ 1.临时修改 在vi中,set tabstop=4 或 set ts=4 2.永久修改 vi --version 查看要修改的文件 如果是vim的话,修改~/ ...