STL:优先级队列的实现

STL中优先级队列本质上就是堆。在上一篇博客中讲到过:堆是一种完全二叉树,逻辑结构上看起来像树,但在物理结构中是存储在线性表中。与普通线性表不同的是,堆中数据大小是规律排列的:小堆中每个节点都大于它的父节点,大堆中每个节点都小于它的父节点。此时就造成小堆中的根节点一定是所有数据中最小的,而大堆中的根节点一定是所有数据中最大的。

#include<iostream>
using namespace std;
namespace yhy

{

 

#include<vector>

#include<functional>
    template<class T>
    class less
    {
        bool operator()(const T& front, const T& back)
        {
            return front < back;
        }
    };

    template<class T>
    class greater
    {
        bool operator()(const T& front, const T& back)
        {
            return front > back;
        }
    };

    template <class T, class Container = vector<T>, class Compare = less<T> >

   

    class priority_queue

    {

    public:

        priority_queue()
        {

        }

        template <class InputIterator>

        priority_queue(InputIterator first, InputIterator last)
            :c(first,last)
        {
            for (size_t i = 1; i < c.size() - 1;i++)
            {
                adjust_up(i);
            }
        }

        bool empty() const
        {
            return c.empty();
        }

        size_t size() const
        {
            return c.size();
        }

        T& top() const
        {
            return c[0];
        }
        void adjust_up(size_t i)
        {
            while (i > 0)
            {
                if (comp(c[(i-1)/2], c[i]))
                {
                    swap(c[i], c[(i - 1) / 2]);
                    i = (i - 1) / 2;
                }
                else
                    break;
            }
        }
        void adjust_down(size_t i)
        {
            size_t j = size();
            size_t child = i * 2 + 1;
            while (j > i)
            {
                if (comp(c[child], c[child + 1]) && child < j)
                {
                    ++child;
                }
                if (comp(c[i], c[child]))
                {
                    swap(c[i], c[(child]);
                    i = i * 2 + 1;
                }
                else
                    break;
            }
        }
        void push(const T& x)
        {
            c.push_back(x);
            adjust_up();
        }

        void pop()
        {
            swap(c[0], c[c.size() - 1]);
            adjust_down();

        }

    private:

        Container c;

        Compare comp;

    };

};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/391877.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024免费人像摄影后期处理工具Portraiture4.1

Portraiture作为一款智能磨皮插件&#xff0c;确实为Photoshop和Lightroom用户带来了极大的便利。通过其先进的人工智能算法&#xff0c;它能够自动识别并处理照片中的人物皮肤、头发和眉毛等部位&#xff0c;实现一键式的磨皮美化效果&#xff0c;极大地简化了后期处理的过程。…

QKD安全攻击防御方案分析和分级评估研究报告

今天分享的是行业报告&#xff1a;《QKD安全攻击防御方案分析和分级评估研究报告》 &#xff08;内容出品方&#xff1a;量子信息网络产业联盟&#xff09; 报告共计&#xff1a;180页 来源&#xff1a;《见鹿报告》 前言 量子通信是量子信息科学的重要分支&#xff0c;它…

人工智能学习与实训笔记(十四):Langchain之Agent

人工智能专栏文章汇总&#xff1a;人工智能学习专栏文章汇总-CSDN博客 本篇目录 0、概要 1、Agent整体架构 2、langchain中agent实现 3、Agent业务实现逻辑 0、概要 Agent是干什么的&#xff1f; Agent的核心思想是使用语言模型&#xff08;LLM&#xff09;作为推理的大脑…

飞行路线(分层图+dijstra+堆优化)(加上题目选数复习)

飞行路线 这一题除了堆优化和dijstra算法和链式前向星除外还多考了一个考点就是&#xff0c;分层图&#xff0c;啥叫分层图呢&#xff1f;简而言之就是一个三维的图&#xff0c;按照其题意来说有几个可以免费的点就有几层&#xff0c;而且这个分层的权值为0&#xff08;这样就相…

嵌入式Qt 计算器界面设计

一.计算器界面设计 计算机界面程序分析&#xff1a; 需要用到的组件&#xff1a; 界面设计&#xff1a; 界面设计实现&#xff1a; 实验1&#xff1a;计算器界面设计 #include <QtGui/QApplication> #include <QWidget> //主窗口 #include <QLineEdit> //文…

由斐波那契数列探究递推与递归

斐波那契数列定义&#xff1a; 斐波那契数列大家都非常熟悉。它的定义是&#xff1a; 对于给定的整数 x &#xff0c;我们希望求出&#xff1a; f ( 1 ) f ( 2 ) … f ( x ) f(1)f(2)…f(x) f(1)f(2)…f(x) 的值。 有两种方法,分别是递推(迭代)与递归 具体解释如下图 备注…

Mysql知识点汇总

Mysql知识点汇总 1. Mysql基本场景的简单语句。2. Mysql的增删改查&#xff0c;统计表中的成绩最好的两个同学的名字&#xff0c;年级等。3&#xff1a;请使用多种方法查询每个学生的每门课分数>80的学生姓名4、order by&#xff0c;group by&#xff0c;子查询4.1、having和…

优化嵌入式系统电源管理以提高稳定性

&#xff08;本文为简单介绍&#xff0c;观点源于网络&#xff09; 在嵌入式系统的领域中&#xff0c;电源管理扮演着至关重要的角色&#xff0c;关乎系统稳定性与用户体验。如果电源管理做得不好&#xff0c;就可能导致系统不稳定、数据丢失&#xff0c;甚至硬件损坏。电源管…

springboot186人格障碍诊断系统

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

03 SS之返回JSON+UserDetail接口+基于数据库实现RBAC

1. 返回JSON 为什么要返回JSON 前后端分离成为企业应用开发中的主流&#xff0c;前后端分离通过json进行交互&#xff0c;登录成功和失败后不用页面跳转&#xff0c;而是给前端返回一段JSON提示, 前端根据JSON提示构建页面. 需求: 对于登录的各种状态 , 给前端返回JSON数据 …

《Go 简易速速上手小册》第9章:数据库交互(2024 最新版)

文章目录 9.1 连接数据库 - Go 语言的海底宝藏之门9.1.1 基础知识讲解安装数据库驱动数据库连接 9.1.2 重点案例&#xff1a;用户信息管理系统准备数据库Go 代码实现连接数据库添加新用户查询用户信息用户登录验证主函数 9.1.3 拓展案例 1&#xff1a;批量添加用户准备数据库Go…

SCI文章复现 | GEO文章套路,数据下载和批次效应处理

原文链接&#xff1a; SCI文章复现 | GEO文章套路&#xff0c;数据下载和批次效应处理https://mp.weixin.qq.com/s/KBA67EJ7cCK5NDTUzrwJ2Q 一、前言 这是2024年春节后的第一个推送教程&#xff0c;我们也给大家赠送一个福利。将前期的付费教程免费推送给大家。其实&#xff…

第13章 网络 Page741~744 asio核心类 ip::tcp::socket

1. ip::tcp::socket liburl库使用"curl*" 代表socket 句柄 asio库使用ip::tcp::socket类代表TCP协议下的socket对象。 将“句柄”换成“对象”,因为asio库是不打折扣的C库 ip::tcp::socket提供一下常用异步操作都以async开头 表13-3 tcp::socket提供的异步操作 …

乡政府|乡政府管理系统|基于Springboot的乡政府管理系统设计与实现(源码+数据库+文档)

乡政府管理系统目录 目录 基于Springboot的乡政府管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户信息管理 2、活动信息管理 3、新闻类型管理 4、新闻动态管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选题推…

BeginCTF2024 RE WP 剩下的复现

12. goforfun&#xff08;寄&#xff09; 前面是一些无关紧要的初始化 下面看到疑似rc4 虽然函数支离破碎&#xff0c;但可以看到rc4的结构&#xff0c;异或的部分做了魔改 后面似乎是base64换表&#xff0c;但脚本跑不出来&#xff0c;这里的算法没搞懂&#xff0c;只能贴一下…

layui表格中使用cascader后导致表格滚动条消失

修改前&#xff0c;受影响页面 修改后最终想要的效果 修改方法

智慧校园规划建设方案

校园信息化建设呈现智能化、应用多样化发展趋势&#xff0c;多种技术和应用交叉渗透至校园生活的各个方面&#xff0c;全面的智慧校园时代已经到来。 对智慧校园的四大应用领域分析 智慧的教学 信息共享交互&#xff1a;建立信息发布、共享、传播与交互的公共平台 教学流程…

torch.utils.data

整体架构 平时使用 pytorch 加载数据时大概是这样的&#xff1a; import numpy as np from torch.utils.data import Dataset, DataLoaderclass ExampleDataset(Dataset):def __init__(self):self.data [1, 2, 3, 4, 5]def __getitem__(self, idx):return self.data[idx]def…

Linux: GDB 调试工具

目录 概念&#xff1a; Linux 下 debug 和 release 的区别&#xff1a; GDB 的使用 &#xff1a; 激活和进入工作模式&#xff1a; 查看文件的内容&#xff1a; 运行调试的文件&#xff1a; 打断点&#xff1a; 查看断点&#xff1a; 删除断点&#xff1a; 禁用断点…

17.3.1.3 灰度

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 灰度的算法主要有以下三种&#xff1a; 1、最大值法: 原图像&#xff1a;颜色值color&#xff08;R&#xff0c;G&#xff0c;B&a…