手写队列以及stl中队列的使用
一,手写队列。
struct queue
{
int maxn=;
int first=,rear=,a[maxn]; void push(int x)
{
a[++rear]=x;
}
void pop()
{
first++;
}
int front()
{
return a[first];
}
int empty()
{
return first>rear?:;
}
}q;
如图所示,是我的手写队列。
二,stl中普通队列的使用。
1,基本操作
push(x)
将x压入队列的末端 pop()
弹出队列的第一个元素(队顶元素),注意此函数并不返回任何值 front()
返回第一个元素(队顶元素) back()
返回最后被压入的元素(队尾元素) empty()
当队列为空时,返回true size()
返回队列的长度
2,使用方法
#include <queue>
3,声明方法
①普通说明
queue<int>q;
②结构体说明
struct node
{
int x, y;
};
queue<node>q;
三,stl中优先队列的使用方法
1,优先队列的介绍。优先队列的出队并不根据入队的先后顺序,而是根据队内元素的优先权顺序的大小(或者自己算子来计算进行的排序)
同时优先队列(priority_queue),有三个模板类参数,元素类型,容器类型,比较算子。默认的容器为vector,默认比较算子为less,即小在前,大在后。这块我有点不懂。反正大的优先出队。
抄原话为(“……默认算子为less,即小的往前排,大的往后排(出队时序列尾的元素出队)……”
2,定义优先队列的对象的示例代码如下
priority_queue<int >q1; priority_queue<pair<int,int> >q2; priority_queue<int,vector<int>,greater<int> >q3;//定义小的先出队
3,其操作与queue基本相同。
4,关于比较算字的应用。
四,另外解释
C++队列的成员函数: back()返回最后一个元素
empty()如果队列空则返回真
front()返回第一个元素
pop()删除第一个元素
push()在末尾加入一个元素
size()返回队列中元素的个数 头文件:
#include <queue> 声明:
、
queue<int> q;
.
struct point
{
int x;
int y;
};
queue<point> que; pair类型:
一般当一个对象有多个属性的时候,我们会用结构体stuct写多个属性,而当只有两个属性的时候,就可以使用pair.
使用方法: pair<type,type> name; 比如: pair<int,int> P; //对象P有两个属性,都是int类型 而且,这里类型一般不做限制,所以自己定义的类型一样可以使用。
访问方法:
pair类型有两个属性值,一个first,一个second int x=P.first; //访问P的第一个属性值
int y=P.second; //访问P的第二个属性值 如果需要定义多个pair类型,可以使用typedef,例子如下: typedef pair<int,int>P;
P ac(,);
P bc(,);
五,以上都是网上的东西
1,我来一些感性的认识,队列简单说,就像自己从屏幕输入的那些东西。当你死机时候乱点其实都是记录上的。
2,另外之前队列和结构体之间似乎搞错了一些东西,队列之所以是队列,是和平常定义结构体不一样的。
手写队列以及stl中队列的使用的更多相关文章
- gcd手写代码及STL中的使用方法
一.手写代码 inline int gcd(int x,int y){ if(y==0) return x; else return(gcd(y,x%y)); } 二.STL中的使用方法 注:在STL ...
- STL中队列(queue)的使用方法
STL 中队列的使用(queue) 基本操作: push(x) 将x压入队列的末端 pop() 弹出队列的第一个元素(队顶元素),注意此函数并不返回任何值 front() 返回第一个元素(队顶元素) ...
- 教你如何使用Java手写一个基于链表的队列
在上一篇博客[教你如何使用Java手写一个基于数组的队列]中已经介绍了队列,以及Java语言中对队列的实现,对队列不是很了解的可以我上一篇文章.那么,现在就直接进入主题吧. 这篇博客主要讲解的是如何使 ...
- MNIST手写数据集在运行中出现问题解决方案
今天在运行手写数据集的过程中,出现一个问题,代码没有问题,但是运行的时候一直报错,错误如下: urllib.error.URLError: <urlopen error [SSL: CERTIF ...
- STL中队列queue的用法
头文件:#include <queue> 建立一个队列queue < 类型 > q 加入一个新的元素q.push(a) 询问队首元素q.front() 弹出队首元素q.pop( ...
- AI应用开发实战 - 手写算式计算器
扩展手写数字识别应用 识别并计算简单手写数学表达式 主要知识点 了解MNIST数据集 了解如何扩展数据集 实现手写算式计算器 简介 本文将介绍一例支持识别手写数学表达式并对其进行计算的人工智能应用的开 ...
- k最邻近算法——使用kNN进行手写识别
上篇文章中提到了使用pillow对手写文字进行预处理,本文介绍如何使用kNN算法对文字进行识别. 基本概念 k最邻近算法(k-Nearest Neighbor, KNN),是机器学习分类算法中最简单的 ...
- 利用神经网络算法的C#手写数字识别(二)
利用神经网络算法的C#手写数字识别(二) 本篇主要内容: 让项目编译通过,并能打开图片进行识别. 1. 从上一篇<利用神经网络算法的C#手写数字识别>中的源码地址下载源码与资源, ...
- (hdu step 8.1.1)ACboy needs your help again!(STL中栈和队列的基本使用)
题目: ACboy needs your help again! Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ...
随机推荐
- 嵌入式02 STM32 实验07 串口通信
STM32串口通信(F1系列包含3个USART和2个UART) 一.单片机与PC机串行通信研究目的和意义: 单片机自诞生以来以其性能稳定,价格低廉.功能强大.在智能仪器.工业装备以及日用电子消费产品中 ...
- 《JAVA高并发编程详解》-程序可能出现死锁的场景
- Tomcat组件梳理--Catalina
Tomcat组件梳理--Catalina 1.定义和功能 Catalina是Tomcat的核心组件,是Servlet容器,Catalina包含了所有的容器组件,其他模块均为Catalina提供支撑.通 ...
- Java调用Http/Https接口(6)--RestTemplate调用Http/Https接口
RestTemplate是Spring提供的用于访问Http接口的客户端,提供同步的API:在将来的Spring版本中可能会过时,将逐渐被WebClient替代.文中所使用到的软件版本:Java 1. ...
- 2019 超级老板APPjava面试笔试题 (含面试题解析)
本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.超级老板等公司offer,岗位是Java后端开发,因为发展原因最终选择去了超级老板,入职一年时间了,也成为了面 ...
- Linux下which、whereis、locate、find命令作用
1 which 查看可执行文件的位置,也可以找到命令别名 2 whereis 查看文件的位置 3 locate 系统数据库查找文件位置,数据库大约每天更新一次 4 find 根据查找条件,搜寻硬盘查询 ...
- js utc转当地时间
javascript utc转当地时间 后台传过来的时间:2019-07-03T01:39:51.691242+08:00 转成当地时间:2019-07-02 17:39:51 new Date(20 ...
- Vue编程式跳转
编程式跳转 <template> <ul class = "prolist"> <!-- //产品 --> <!-- :to = &quo ...
- business from English bisynes
business from English bisynes Etymology From Middle English bisynes Hyphenation: business Noun busin ...
- day 09作业 预科
作业 1.简述定义函数的三种方式. 定义函数的三种方式为空函数,有参函数和无参函数 2.简述函数的返回值. 如果函数没有返回值,会直接返回到None: 函数可以通过return返回出返回值: retu ...