当前位置: 首页 > article >正文

priority_queue

来组ai的回答

https://chatgpt.com/c/679ed5d1-79c0-800c-8bb1-1c105c7107aa

一些与别的stl不同的地方

1. pop操作是先将栈顶元素和栈底元素互换  然后再将栈顶元素下沉 然后删除栈顶

priority_queue也可以比抽象类 只要<重载 指定比较对象就可以

代码演示

//
// Created by 徐昌真 on 2025/2/2.
//
#include <iostream>
#include <queue>
#include <vector>
#include <string>

using namespace std;

class Lesson{
public:
    int num;
    string lesson;
    Lesson(){ num = -1; lesson = " ";};  //默认构造函数
    Lesson(int n, const string& l): num(n), lesson(l) {};

    bool operator<(const Lesson& other) const{  // <重载
        return num < other.num;
    }
};

int main() {

    //  小顶堆
    priority_queue<int, vector<int>, greater<int>> q1;
    q1.push(1);
    q1.push(3);
    q1.push(2);
    q1.push(10);
    cout << "q1.top(): " << q1.top() << endl;

    // 大顶堆
    priority_queue<Lesson> q2;
    q2.push(Lesson(1, "语文"));
    q2.push(Lesson(3, "英语"));
    q2.push(Lesson(2, "数学"));
    q2.push(Lesson(0, "c++"));
    cout << "q2.top(): " << q2.top().num << ':' << q2.top().lesson << endl;




    return 0;
}


http://www.kler.cn/a/529993.html

相关文章:

  • 鸟哥Linux私房菜笔记(三)
  • LeetCode:300.最长递增子序列
  • AI学习指南HuggingFace篇-Tokenizers 与文本处理
  • Alibaba开发规范_编程规约之命名风格
  • 【etcd】二进制安装etcd
  • 「Unity3D」在Unity中使用C#控制显示Android的状态栏
  • Kanass快速安装配置教程(入门级)
  • RK3568 wifi使用(使用Linux指令操作)
  • 每日一题——用两个栈实现队列
  • 一分钟深挖@Value注解和@ConfigurationProperities注解的区别
  • 基于SpringBoot的智慧康老疗养院管理系统的设计与实现(源码+SQL脚本+LW+部署讲解等)
  • Spring Boot Web项目全解析:Thymeleaf语法
  • 『 C 』 `##` 在 C 语言宏定义中的作用解析
  • 2.[网鼎杯 2020 朱雀组]phpweb
  • Android 开发:新的一年,新的征程
  • 【5. C++ 变量作用域及其深入探讨】
  • 2 [GitHub遭遇严重供应链投毒攻击]
  • 城市道路车辆自行车摩托车公交车检测数据集VOC+YOLO格式5236张5类别
  • FlashAttention v1 论文解读
  • Word List 2
  • 二叉树——102,107,199,637
  • 云原生(五十三) | SQL查询操作
  • 机器学习--概览
  • 使用等宽等频法进行数据特征离散化
  • C++, STL容器 list:双向链表深度解析
  • MLM之MiniCPM-o:MiniCPM-o的简介(涉及MiniCPM-o 2.6和MiniCPM-V 2.6)、安装和使用方法、案例应用之详细攻略