手写队列以及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 ...
随机推荐
- collections模块之defaultdict()与namedtuple()方法简单介绍
一.defaultdict() 作用:根据数据创建字典时,需要为一些数据生成字典,而且对值得类型进行限定的时候,考虑defaultdict from collections import defaul ...
- LOJ2401 JOISC2017 Dragon2 计算几何、线段树
传送门 先考虑每一个攻击方的龙和被攻击方的龙可以与多少个被攻击方/攻击方的龙匹配. 对于攻击方的龙\(A\)和被攻击方的龙\(B\),在道路为线段\((C,D)\)的情况下,能够与下图位置的所有对应属 ...
- 创建包含CRUD操作的Web API接口4:实现Put方法
本节教程是前三节的延续,在前面我们创建了Web API和必要的基础设施,也实现了Get和Post方法.接下来,我们将在Web API中实现Put方法. RESTful架构中,HTTP PUT方法用于在 ...
- redis - redis安装与启动
redis安装 下载redis安装包 wget http://download.redis.io/releases/redis-5.0.7.tar.gz 解压缩 tar -xzf redis-5.0. ...
- mybatis 变更xml文件目录
mybatis的xml默认读取的是resources目录,这个目录是可以变化的.我习惯于将mapper文件和xml放到一起或相邻目录下. 如图: 具体操作: 以mybatis-plus为例 boots ...
- iOS 12中获取WiFi的SSID
开始搞智能家居,wifi获取不到了?? 小插曲 旧方法失效,19-12-15更新,ios13开始需要请求定位信息 SSID全称Service Set IDentifier, 即Wifi网络的公开名称. ...
- 神奇的外部嵌套(使用ROW_NUMBER()查询带条件的时候提示列名无效)
declare @pageIndex int -- 第几页 declare @pageSize int -- 每页包含的记录数 --这里注意一下,不能直接把变量放在这里,要用select select ...
- JavaScript原型链以及Object,Function之间的关系
JavaScript里任何东西都是对象,任何一个对象内部都有另一个对象叫__proto__,即原型,它可以包含任何东西让对象继承.当然__proto__本身也是一个对象,它自己也有自己的__proto ...
- mysql模糊查询1,11,111用逗号(其他符号)拼接的相似字符串
mysql进行模糊查询时,基本都是LIKE "%sss%",有时候这种查询时准确的,但是有种情况这种查询会出现很大问题. 看一下下面这张表 如果想查询字段test包含1的数据,一般 ...
- js 获取 对象 属性名称(转载)
来源:https://www.cnblogs.com/YuyuanNo1/p/9257634.html dataObj = {name : su,age : 26,height : 18cm }; f ...