#include <queue>
双端队列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>的更多相关文章
- 浅谈JSP中include指令与include动作标识的区别
JSP中主要包含三大指令,分别是page,include,taglib.本篇主要提及include指令. include指令使用格式:<%@ include file="文件的绝对路径 ...
- Entity Framework 6 Recipes 2nd Edition(13-9)译 -> 避免Include
问题 你想不用Include()方法,立即加载一下相关的集合,并想通过EF的CodeFirst方式实现. 解决方案 假设你有一个如Figure 13-14所示的模型: Figure 13-14. A ...
- error RC1015: cannot open include file 'afxres.h' 解决办法
在为WindowsPhone8程序添加本地化的过程中遇到这个问题: 问题原因就是afxres.h文件缺失,下载它,放到VS安装目录下的VS\include目录下就可以了(选择目录的时候注意对应对版本) ...
- Mybatis常用总结:参数,返回,执行sql,include等
1.参数注入1.1用#{0},#{1}的形式,0代表第一个参数,1代表第二个参数 public List<RecordVo> queryList(String workerId, Inte ...
- jsp中的@include与jsp:include区别详解
1 前言 搞java开发的人也许都知道在jsp中引入项目中其他文件有如下两种方式 <%@include file="xxx.jsp"%> <jsp:include ...
- JSP中编译指令include与动作指令include的区别
include指令是编译阶段的指令,即include所包含的文件的内容是编译的时候插入到JSP文件中,JSP引擎在判断JSP页面未被修改, 否则视为已被修改.由于被包含的文件是在编译时才插入的,因此如 ...
- C/C++ 中的include
当需要使用已有的方法或库时, 可以将它们的头文件#include进来. #include会在preprocess过程中被替换成它包含的代码. 头文件中包含了需要使用的函数/变量的声明. 当然声明与定义 ...
- 织梦多语言站点,{dede:include filename=''/}引入问题
织梦模板include插入非模板目录文件出现"无法在这个位置找到"错误的解决办法 以下是dede V55_UTF8 查dede include标签手册 (3) include 引入 ...
- PHP 站点相对包含,路径的问题解决方法(include,require)
以前看了,很多框架,基本上很少使用相对路径包含.而一般很多做php web站点,喜欢用相对路径. 认为这样,无论目录放到那里. 只要跟另外目录关系一致.那么就不会出现问题.如果一个站点,一般都认为,如 ...
- 如何让include标签包裹的布局置于屏幕最下方?
如何让一个Layout 始终在屏幕的下方 我想让<include layout="@layout/bottom" />一直在屏幕下,怎么做? 1.相对布局中用属性 a ...
随机推荐
- openssl CA 自签证书,阿里云配置tomcat https
<一,openssl CA自签发证书> 1,生成私钥 openssl genrsa 1024 > private.key;
- ubuntu查看硬件信息
1,外部探针probe sudo apt-get install hwinfo 执行hwinfo获取系统信息 --short
- Volist标签 key值的使用
Volist标签是thinkphp框架view中常用到的一个标签.主要用于在模板中循环输出数据集或者多维数组.今天使用key属性时出了点问题,记录一下. volist标签(循环输出数据) 闭合 非闭合 ...
- find -exec
find -exec 的标准写法 find ./ -name "*.tmp" -exec rm -rf "{}" \; find -exec 这个命令组合很好用 ...
- hdu 5463 Clarke and minecraft(贪心)
Problem Description Clarke is a patient with multiple personality disorder. One day, Clarke turned i ...
- Web页面布局方式小结
Web页面是由块元素组成的,正常情况下块元素一个个按垂直方向排布,构成了页面.可是这样的主要的布局方式绝大多时候不能满足我们的需求,所以各种布局方式应运而生,本文就对这些布局方式做个小结. 1.元素漂 ...
- Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent
修改pom.xml文件,添加以下属性 <project> ... <properties> <project.build.sourceEncoding>UTF-8& ...
- .Net 中DataSet导出为excel的方法
依旧是留下代码防止以后忘记 protected void Export_Click(object sender, EventArgs e) { DataSet data = "" ...
- MySQL整数类型说明 int(11) vs int(20)
整数类型后面跟的是显示的宽度.M指示最大显示宽度.最大有效显示宽度是255.显示宽度与存储大小或类型包含的值的范围无关. 实践出真知: mysql> create table test2 ( a ...
- android——生成或者下载的图片在相册中找不到
今天在写程序的时候,遇到了一个问题,就是生成的图片一直都不能在相册中显示出来,而且,就连通过发送Intent过去,都找不到.通过在网上搜索,发现了一个很好的方法. Intent intent = ne ...