c++优先级队列自定义排序实现方式

news2024/12/24 9:13:07

1、使用常规方法实现

使用结构体实现自定义排序函数

2、使用lambda表达式实现

使用lambda表达式实现自定义排序函数

3、具体实现如下:

#include <iostream>
#include <queue>
#include <vector>

using namespace std;
using Pair = pair<int, int>;

class Test {
public:
    void FirstFun(const vector<Pair>& data) {
        priority_queue<Pair, vector<Pair>, Test::cmp> priorityQueue(data.begin(), data.end());
        cout << "First fun:" << endl;
        while (!priorityQueue.empty()) {
            const auto& topItem = priorityQueue.top(); // 使用常量引用
            cout << "(" << topItem.first << "," << topItem.second << ")" << endl;
            priorityQueue.pop();
        }
    }

    void SecondFun(const vector<Pair>& data) {
        auto cmp1 = [](const Pair& lhs, const Pair& rhs) {
            return lhs.second > rhs.second;
        };
        priority_queue<Pair, vector<Pair>, decltype(cmp1)> priorityQueue(data.begin(), data.end(), cmp1);
        cout << "Second fun:" << endl;
        while (!priorityQueue.empty()) {
            const auto& topItem = priorityQueue.top(); // 使用常量引用
            cout << "(" << topItem.first << "," << topItem.second << ")" << endl;
            priorityQueue.pop();
        }
    }

private:
    struct cmp {
        bool operator()(const Pair& litem, const Pair& ritem) {
            return litem.second > ritem.second;
        }
    };
};

int main() {
    Test test;
    vector<Pair> vec = {{6, 5}, {5, 2}, {3, 7}};
    test.FirstFun(vec);
    test.SecondFun(vec);
    return 0;
}

4、运行结果:

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FL Studio 24.1.1.4285中文破解完整版免费下载FL 2024注册密钥完整版crack百度云安装包下载

FL Studio 24.1.1.4285中文破解版是一个强大的软件选项&#xff0c;可以使用专业应用程序&#xff08;如最先进的录音机、均衡器、内置工具等&#xff09;制作循环和歌曲。它由数百个合成器和混响等效果以及均衡器组成&#xff0c;除此之外&#xff0c;您还可以在新音乐制作的方…

solidwork找不到曲面

如果找不到曲面 则右键找到选项卡&#xff0c;选择曲面

Kafka3.8.0+Centos7.9的安装参考

Kafka3.8.0Centos7.9的安装参考 环境准备 操作系统版本&#xff1a;centos7.9 用户/密码&#xff1a;root/1qazXSW 主机名 IP地址 安装软件 下载地址 k1 192.168.207.131 jdk1.8zookeeper3.9.2kafka_2.13-3.8.0efak-web-3.0.1 1&#xff09; Java Downloads | Oracle …

双击热备 Electron网页客户端

安装流程&#xff1a; 1.下载node.js安装包进行安装 2.点击Next; 3.勾选&#xff0c;点击Next; 4.选择安装目录 5.选择Online 模式 6.下一步执行安装 。 7.运行cmd,执行命令 path 和 node --version&#xff0c;查看配置路径和版本 8.Goland安装插件node.js 9.配置运行…

Vue 修饰符 | 指令 区别

Vue 修饰符 | 指令 区别 在Vue.js这个前端框架中&#xff0c;修饰符&#xff08;modifiers&#xff09;和指令&#xff08;directives&#xff09;是两个非常重要的概念。这里我们深度讨论下他们区别。 文章目录 Vue 修饰符 | 指令 区别一、什么是修饰符修饰符案例常见修饰符列…

2024年“华为杯”研赛第二十一届中国研究生数学建模竞赛解题思路|完整代码论文集合

我是Tina表姐&#xff0c;毕业于中国人民大学&#xff0c;对数学建模的热爱让我在这一领域深耕多年。我的建模思路已经帮助了百余位学习者和参赛者在数学建模的道路上取得了显著的进步和成就。现在&#xff0c;我将这份宝贵的经验和知识凝练成一份全面的解题思路与代码论文集合…

Elasticsearch:检索增强生成背后的重要思想

作者&#xff1a;来自 Elastic Jessica L. Moszkowicz 星期天晚上 10 点&#xff0c;我九年级的女儿哭着冲进我的房间。她说她对代数一无所知&#xff0c;注定要失败。我进入超级妈妈模式&#xff0c;却发现我一点高中数学知识都不记得了。于是&#xff0c;我做了任何一位超级妈…

ActivityManagerService 分发广播(6)

ActivityManagerService 分发广播 简述 上一节我们看了发送广播流程&#xff0c;主要是将广播信息封装至BroadcastRecord&#xff0c;然后通过BroadcastQueueImpl/BroadcastQueueModernImpl的enqueueBroadcastLocked来发送广播。 这一节我们来看一下AMS是怎么分发广播的流程&…

【论文笔记】Are Large Kernels Better Teacheres than Transformers for ConvNets

Abstract 本文提出蒸馏中小核ConvNet做学生时&#xff0c;与Transformer相比&#xff0c;大核ConvNet因其高效的卷积操作和紧凑的权重共享&#xff0c;使得其做教师效果更好&#xff0c;更适合资源受限的应用。 用蒸馏从Transformers蒸到小核ConvNet的效果并不好&#xff0c;原…

视频去噪技术分享

视频去噪是一种视频处理技术&#xff0c;旨在从视频帧中移除噪声和干扰&#xff0c;提高视频质量。噪声可能由多种因素引起&#xff0c;包括低光照条件、高ISO设置、传感器缺陷等。视频去噪对于提升视频内容的可视性和可用性至关重要&#xff0c;特别是在安全监控、医疗成像和视…

001.从0开始实现线性回归(pytorch)

000动手从0实现线性回归 0. 背景介绍 我们构造一个简单的人工训练数据集&#xff0c;它可以使我们能够直观比较学到的参数和真实的模型参数的区别。 设训练数据集样本数为1000&#xff0c;输入个数&#xff08;特征数&#xff09;为2。给定随机生成的批量样本特征 X∈R10002 …

正点原子阿尔法ARM开发板-IMX6ULL(八)——串口通信(寄存器解释)(补:有源蜂鸣器)

文章目录 一、蜂鸣器&#xff08;待&#xff0c;理解&#xff09;1.1 第一行1.2 第二行1.3 第三行 二、串口原理2.1 通信格式2.2 UART寄存器 一、蜂鸣器&#xff08;待&#xff0c;理解&#xff09; 1.1 第一行 对于第一行&#xff0c;首先先到fsl_iomuxc文件里面寻找IOMUXC_S…

探索C语言与Linux编程:获取当前用户ID与进程ID

探索C语言与Linux编程:获取当前用户ID与进程ID 一、Linux系统概述与用户、进程概念二、C语言与系统调用三、获取当前用户ID四、获取当前进程ID五、综合应用:同时获取用户ID和进程ID六、深入理解与扩展七、结语在操作系统与编程语言的交汇点,Linux作为开源操作系统的典范,为…

01-Mac OS系统如何下载安装Python解释器

目录 Mac安装Python的教程 mac下载并安装python解释器 如何下载和安装最新的python解释器 访问python.org&#xff08;受国内网速的影响&#xff0c;访问速度会比较慢&#xff0c;不过也可以去我博客的资源下载&#xff09; 打开历史发布版本页面 进入下载页 鼠标拖到页面…

安装Kali Linux后8件需要马上安排的事

目录 一、更新升级 二、 编辑器 三、用户与权限 四、 下载TOR 五、下载终端 一、更新升级 sudo apt update -y && sudo apt upgrade -y && sudo apt autoremove 二、 编辑器 VScode或者vim&#xff1b;点击.deb就会下载了 一般都会下载到Downloads文件夹中…

煤矸石检测数据集(yolo)

yolo煤矸石检测 数据集 pt模型 界面&#xff0c; ✓3091张图片和txt标签&#xff0c;标签类别两类&#xff1a;“coal”、“rock”。 ✓适用于煤矸石识别&#xff0c;深度学习&#xff0c;机器学习&#xff0c;yolov5 yolov6 yolov7 yolov8 yolov9 yolov10&#xff0c;Python 煤…

YOLOv5模型部署教程

一、介绍 YOLOv5模型是一种以实时物体检测闻名的计算机视觉模型&#xff0c;由Ultralytics开发&#xff0c;并于2020年年中发布。它是YOLO系列的升级版&#xff0c;继承了YOLO系列以实时物体检测能力而著称的特点。 二、基础环境 系统&#xff1a;Ubuntu系统&#xff0c;显卡…

企业内网安全

企业内网安全 1.安全域2.终端安全3.网络安全网络入侵检测系统异常访问检测系统隐蔽信道检测系统 4.服务器安全基础安全配置入侵防护检测 5.重点应用安全活动目录邮件系统VPN堡垒机 6.蜜罐体系建设蜜域名蜜网站蜜端口蜜服务蜜库蜜表蜜文件全民皆兵 1.安全域 企业出于不同安全防…

详读西瓜书+南瓜书第3章——线性回归

在这里&#xff0c;我们来深入探讨线性模型的相关内容&#xff0c;这章涵盖了从基础线性回归到更复杂的分类任务模型。我们会逐步分析其数学公式和实际应用场景。 3.1 基本形式 线性模型的核心是通过属性的线性组合来预测结果。具体形式为&#xff1a; 其中&#xff0c;w 是…

基于深度学习的花卉智能分类识别系统

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 传统的花卉分类方法通常依赖于专家的知识和经验&#xff0c;这种方法不仅耗时耗力&#xff0c;而且容易受到主观因素的影响。本系统利用 TensorFlow、Keras 等深度学习框架构建卷积神经网络&#…