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

STL容器适配器之<priority_queue>

文章目录

    • 测试环境
    • priority_queue介绍
    • 头文件
    • 模块类定义
    • 对象构造
    • 元素访问
    • 元素插入和删除
    • 容器大小
    • 迭代器
    • 其他函数

测试环境

系统:ubuntu 22.04.2 LTS 64位
gcc版本:11.3.0
编辑器:vsCode 1.76.2

priority_queue介绍

  1. 容器适配器。
  2. 支持在末端插入元素,在首端删除元素。
  3. 不支持随机访问。
  4. 先进先出规则(FIFO)
  5. 可以设置元素的优先级最高优先级的元素排在队头
  6. 默认基础容器为vector,还可以使用deque作为基础容器,或者支持front()、pop_back()、push_buck()的其他容器。

头文件

#include <queue>

模块类定义

template<typename _Tp, typename _Sequence = vector<_Tp>,typename _Compare  = less<typename _Sequence::value_type> >class priority_queue{};

_Tp:表示存储的元素数据类型
_Sequence:基础容器,默认为vector。
_Compare:排序方式,可通过函数对象来自定义

对象构造

/*默认构造函数*/
std::priority_queue<int> priorityque1;/*拷贝构造函数*/
std::priority_queue<int> priorityque2(priorityque1);/*指定基础容器*/
std::priority_queue<std::string, std::deque<std::string> > priorityque3;/*指定基础容器并指定排序方式*/
std::priority_queue<std::string, std::deque<std::string> ,std::greater<std::string> > priorityque4;/*指定范围构造*/
std::vector<int> vct1({2,3,1,4,6,5,9,8,7});
std::priority_queue<int> priorityque5(vct1.begin(),vct1.end());

元素访问

函数名返回值功能
top()首元素的常量引用获取首元素,队列为空时返回值不确定
/*队首元素访问*/
std::cout << priorityqueTest.top() << std::endl;

元素插入和删除

函数返回值功能
pop()删除队列头元素
push()队列尾插入元素
emplace()队列尾插入元素
std::priority_queue<int> priorityqueTest;
/*元素插入*/
priorityqueTest.push(88);/*元素插入*/
priorityqueTest.emplace(8);/*队首元素删除*/
priorityqueTest.pop();  

容器大小

函数返回值功能
empty()bool判断当前容器是否为空,为空返回true,否则返回false
size()std::size_t获取当前容器中的元素数量
/*判断队列是否为空*/
std::cout << std::boolalpha << priorityqueTest.empty() << std::endl;
/*获取队列中元素数量*/
std::cout << priorityqueTest.size() << std::endl;

迭代器

不支持

其他函数

函数名返回值功能
swap()交换两个容器的元素
/*交互两个容器元素的值,无返回值*/
std::priority_queue<int> priorityqueSwap1;
priorityqueSwap1.push(1);
priorityqueSwap1.push(2);
priorityqueSwap1.push(3);
std::priority_queue<int> priorityqueSwap2;
priorityqueSwap2.push(4);
priorityqueSwap2.push(5);
priorityqueSwap2.push(6);
/*方式1, priorityqueSwap1={6,5,4}, priorityqueSwap2={3,2,1}*/
priorityqueSwap1.swap(priorityqueSwap2);/*priorityqueSwap1={3,2,1}, priorityqueSwap2={6,5,4}*/
std::swap(priorityqueSwap1,priorityqueSwap2);
http://www.lryc.cn/news/58631.html

相关文章:

  • 线程——线程同步
  • 安卓录屏使用VirtualDisplay虚拟屏幕;MediaRecorder,媒体录影机;
  • Java FileChannel文件的读写实例
  • 2023 年男生还推荐报计算机专业吗?
  • 【华为OD机试真题】积木最远距离(相同数字的积木游戏1)(javapython)
  • STM32F103RCT6驱动SG90舵机-完成正反转角度控制
  • 【4.13(补)】二叉搜索树的遍历、插入、删除
  • Web 攻防之业务安全:Callback自定义测试(触发XSS漏洞)
  • Java访问底层操作系统
  • Python 进阶指南(编程轻松进阶):十六、面向对象编程和继承
  • 【计算机系统结构】第一章 计算机系统结构基本概念
  • e2fsprogs logsave Ubuntu 安装失败 unable to make backup link of ‘./usr/bin/chattr‘
  • 在排序数组中查找元素的第一个和最后一个位置(二分查找进阶)
  • 1 Nginx跨域配置
  • ChatGTP如此强大,我们普通人如何利用它来赚钱?
  • 常见的九种大数据分析模型
  • 射频识别(RFID)技术的基本原理、特性、发展和应用
  • 3.3 二维随机变量条件分布
  • Kafka——概述、安装及命令行操作
  • 怎么控制ERP企业管理系统开发的价格
  • 我在“Now In Android”中学到的 9 件事
  • ChatGPT宝藏插件丨装上之后,上网、语音聊天、一键分享对话……简直让你爽到起飞!
  • 私有句柄表
  • Vue——类与样式绑定
  • 软考中项计算题总结
  • 如何使用基于GPT-4的Cursor编辑器提升开发效率
  • 压箱底教程分享,手把手教会你如何注册target账号和下单
  • 一次性搞懂dBSPL、dBm、dBu、dBV、dBFS的区别!
  • 漂亮实用的15个脑图模板,你知道哪些是AI做的吗?
  • 历代程序员都无法逃脱的诅咒 -- 低代码