XZ Blog XZ Blog
首页
  • 人体姿态估计
  • 2D-3D-Lifting
  • 动作质量评估
  • 基于RGBD视觉信息的异常行为识别
  • 基于RGB视频的行为识别
  • 大模型应用
  • 网络结构

    • Transformer
    • GCN
    • Graph Transformers
    • Diffusion Model
  • 深度学习
  • 论文解读
  • 后端开发
  • Git
  • 博客搭建
  • Debug
  • 面试
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

xzhouzeng

@渐行。
首页
  • 人体姿态估计
  • 2D-3D-Lifting
  • 动作质量评估
  • 基于RGBD视觉信息的异常行为识别
  • 基于RGB视频的行为识别
  • 大模型应用
  • 网络结构

    • Transformer
    • GCN
    • Graph Transformers
    • Diffusion Model
  • 深度学习
  • 论文解读
  • 后端开发
  • Git
  • 博客搭建
  • Debug
  • 面试
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 后端开发

    • cmake介绍
    • \{}统一初始化方
    • C++11新特性
    • C++标准推荐使用标准库头文件
    • C++动态内存分配和静态的区别
    • C++类函数后面加const的作用
    • C++类和结构区别
    • C++内存区域
    • nullptr与NULL
    • priority_queue使用
      • string , cstring , string h 的区别
      • using与typedef定义别名区别
      • vector中[]和at访问区别
      • 常量指针和指针常量
      • 空类大小及相关介绍
      • 容器emplace与push操作
      • 数据结构操作——时间复杂度
      • 智能指针(Smart Pointers)
      • 最大堆的实现
    • Git

    • 博客搭建

    • Debug

    • python开发

    • 技术
    • 后端开发
    xzhouzeng
    2023-03-20
    目录

    priority_queue使用

    # priority_queue使用

    Created: March 19, 2024 12:13 PM

    在C++中,**priority_queue是标准模板库(STL)中的一种容器适配器,它提供了一种方式来维护一个集合,使得其中的元素总是按照某种给定的顺序(通常是根据元素的值排序)排列。priority_queue**支持基本操作,如插入新元素和从队列中取出并移除顺序最高(或最低)的元素。

    **priority_queue的实现通常是一个最大堆,这意味着队列的顶部(可以通过top()**方法访问)总是当前队列中最大的元素。如果需要最小堆行为,则可以通过提供自定义比较函数来实现。

    # 基本用法

    要使用**priority_queue,你需要包含头文件<queue>**。

    cppCopy code
    #include <iostream>#include <queue>int main() {
        std::priority_queue<int> pq;
    
        // 插入元素
        pq.push(30);
        pq.push(10);
        pq.push(20);
    
        // 获取并移除顶部元素(最大的元素)
        while (!pq.empty()) {
            std::cout << pq.top() << " "; // 访问顶部元素
            pq.pop(); // 移除顶部元素
        }
        // 输出: 30 20 10
    }
    
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17

    # 自定义比较函数

    你可以自定义**priority_queue**的排序行为,通过提供自定义的比较函数类型。这在需要最小堆或根据特定标准排序队列时特别有用。

    cppCopy code
    #include <iostream>#include <queue>#include <vector>#include <functional> // std::greaterint main() {
        // 创建一个最小堆
        std::priority_queue<int, std::vector<int>, std::greater<int>> pq;
    
        // 插入元素
        pq.push(30);
        pq.push(10);
        pq.push(20);
    
        // 获取并移除顶部元素(最小的元素)
        while (!pq.empty()) {
            std::cout << pq.top() << " "; // 访问顶部元素
            pq.pop(); // 移除顶部元素
        }
        // 输出: 10 20 30
    }
    
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18

    # 关键点

    • priority_queue提供了有限的接口,主要包括push()、pop()、top()、**empty()和size()**方法。
    • 它不提供遍历容器的方式,因为**priority_queue**的目的是保持顶部元素总是最大(或根据提供的比较函数确定的顺序)的元素,而不是提供对所有元素的随机访问。
    • 默认情况下,**priority_queue**是最大堆,但通过提供自定义的比较函数,可以改变其行为(如示例中的最小堆)。

    **priority_queue**在需要快速访问集合中的最大(或最小)元素的场景中非常有用,比如任务调度、事件驱动的模拟、路径查找算法中的开放集管理等。

    编辑 (opens new window)
    nullptr与NULL
    string , cstring , string h 的区别

    ← nullptr与NULL string , cstring , string h 的区别→

    最近更新
    01
    VideoLLMs
    03-20
    02
    Video2Script
    12-07
    03
    多模态
    11-09
    更多文章>
    Theme by Vdoing | Copyright © 2022-2024 xzhouzeng | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式