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

C++ sort与优先队列排序的区别

  int main() {vector<int> data{3, 1, 2};cout << "从小到大排序" << endl;sort(data.begin(), data.end(), std::less<int>());printContainer(data);auto cmp1 = [](int x, int y) { return x < y; };sort(data.begin(), data.end(), cmp1);printContainer(data);cout << "从大到小排序" << endl;sort(data.begin(), data.end(), std::greater<int>());printContainer(data);auto cmp2 = [](int x, int y) { return x > y; };sort(data.begin(), data.end(), cmp2);printContainer(data);cout << "大顶堆" << endl;priority_queue<int, vector<int>, std::less<int>> heap1(data.begin(), data.end());printHeapOrStack(heap1);priority_queue<int, vector<int>, decltype(cmp1)> heap2(data.begin(), data.end());printHeapOrStack(heap2);cout << "小顶堆" << endl;priority_queue<int, vector<int>, std::greater<int>> heap3(data.begin(), data.end());printHeapOrStack(heap3);priority_queue<int, vector<int>, decltype(cmp2)> heap4(data.begin(), data.end());printHeapOrStack(heap4);
}

输出结果:

从小到大排序
1    2    3    
1    2    3    
从大到小排序
3    2    1    
3    2    1    
大顶堆
3    2    1    
3    2    1    
小顶堆
1    2    3    
1    2    3    

可以看到:std::sort 与 优先队列的排序规则刚好相反。

另外:本文使用的一些辅助打印容器函数备忘:

template<typename Container>
void printContainer(const Container &container) {for (const auto &item: container) {std::cout << item << "\t";}std::cout << std::endl;
}template<typename Container>
void printHeapOrStack(const Container &heap) {Container heapCopy = heap;while (!heapCopy.empty()) {std::cout << heapCopy.top() << "\t";heapCopy.pop();}std::cout << std::endl;
}template <typename MapType>
void printMap(const MapType& container) {for (const auto& item : container) {std::cout << item.first << ": " << item.second << "\t";}std::cout << std::endl;
}template <typename QueueType>
void printQueue(const std::queue<QueueType>& q) {std::queue<QueueType> qCopy = q;while (!qCopy.empty()) {std::cout << qCopy.front() << "\t";qCopy.pop();}std::cout << std::endl;
}

相关文章:

C++ sort与优先队列排序的区别

int main() {vector<int> data{3, 1, 2};cout << "从小到大排序" << endl;sort(data.begin(), data.end(), std::less<int>());printContainer(data);auto cmp1 [](int x, int y) { return x < y; };sort(data.begin(), data.end(), cmp…...

【Rust】Rust学习 第十九章高级特征

现在我们已经学习了 Rust 编程语言中最常用的部分。在第二十章开始另一个新项目之前&#xff0c;让我们聊聊一些总有一天你会遇上的部分内容。你可以将本章作为不经意间遇到未知的内容时的参考。本章将要学习的功能在一些非常特定的场景下很有用处。虽然很少会碰到它们&#xf…...

C++ 纯虚函数和虚函数的区别

在 C 中&#xff0c;虚函数&#xff08;Virtual Function&#xff09;和纯虚函数&#xff08;Pure Virtual Function&#xff09;都是用于实现多态性的机制&#xff0c;但它们之间有一些关键的不同。 虚函数&#xff08;Virtual Function&#xff09; 定义&#xff1a;在基类…...

Go中的有限状态机FSM的详细介绍 _

1、FSM简介 1.1 有限状态机的定义 有限状态机&#xff08;Finite State Machine&#xff0c;FSM&#xff09;是一种数学模型&#xff0c;用于描述系统在不同状态下的行为和转移条件。 状态机有三个组成部分&#xff1a;状态&#xff08;State&#xff09;、事件&#xff08;…...

Python入门教程 | Python3 基本数据类型

赋值 Python 中的变量不需要声明。每个变量在使用前都必须赋值&#xff0c;变量赋值以后该变量才会被创建。 在 Python 中&#xff0c;变量就是变量&#xff0c;它没有类型&#xff0c;我们所说的"类型"是变量所指的内存中对象的类型。 等号&#xff08;&#xff…...

STM32移植u8g2玩转oled 用软件iic实现驱动oled

移植u8g2到stm int fputc(int ch,FILE *f) {ITM_SendChar(ch);return (ch); }void delay_us(uint32_t time) {uint32_t i8*time;while(i--); }uint8_t STM32_gpio_and_delay(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr) {//printf("%s:msg %d,arg_int …...

C++ 学习系列 -- string 实现

string是C标准库的重要部分&#xff0c;主要用于字符串处理。这里我们自己实现一个简单版本的 string. 一 思路 string 类中应该包含如下&#xff1a; 1. 类成员变量&#xff1a;char* m_data&#xff0c;利用 char* 指针存放字符串 2. 成员函数&#xff1a; 2.1 size(…...

C语言小练习(三)

&#x1f31e; “也许你感觉自己与周遭格格不入&#xff0c;但正是那些你一人度过的时光&#xff0c;让你变得越来越有意思&#xff0c;等有天别人终于注意到你的时候&#xff0c;他们就会发现一个比他们想象中更酷的人。”-《生活大爆炸》 Day03 &#x1f4dd; 一.选择题&…...

2023 js逆向爬虫 有道翻译 代码

前置条件&#xff1a;nodejs环境、安装 crypto 和 python3环境 js.js文件&#xff1a; const crypto require("crypto")function decode(resp_data) {g_o ydsecret://query/key/B*RGygVywfNBwpmBaZg*WT7SIOUP2T0C9WHMZN39j^DAdaZhAnxvGcCY6VYFwnHlg_n ydsecre…...

【物联网无线通信技术】NFC从理论到实践(FM17XX)

NFC&#xff0c;全称是Near Field Communication&#xff0c;即“近场通信”&#xff0c;也叫“近距离无线通信”。NFC诞生于2004年&#xff0c;是基于RFID非接触式射频识别技术演变而来&#xff0c;由当时的龙头企业NXP(原飞利浦半导体)、诺基亚以及索尼联合发起。NFC采用13.5…...

Python爬虫猿人学逆向系列——第六题

题目&#xff1a;采集全部5页的彩票数据&#xff0c;计算全部中奖的总金额&#xff08;包含一、二、三等奖&#xff09; 地址&#xff1a;https://match.yuanrenxue.cn/match/6 本题比较简单&#xff0c;只是容易踩坑。话不多说请看分析。 两个参数&#xff0c;一个m一个f&…...

idea使用tomcat

1. 建立javaweb项目 2. /WEB-INF/web.xml项目配置文件 如果javaweb项目 先建立项目&#xff0c;然后在项目上添加框架支持&#xff0c;选择javaee 3. 项目结构 4.执行测试&#xff1a;...

搭建Tomcat HTTP服务:在Windows上实现外网远程访问的详细配置与设置教程

文章目录 前言1.本地Tomcat网页搭建1.1 Tomcat安装1.2 配置环境变量1.3 环境配置1.4 Tomcat运行测试1.5 Cpolar安装和注册 2.本地网页发布2.1.Cpolar云端设置2.2 Cpolar本地设置 3.公网访问测试4.结语 前言 Tomcat作为一个轻量级的服务器&#xff0c;不仅名字很有趣&#xff0…...

Java学习笔记——继承(包括this,super的使用总结)

继承&#xff1a; 使用情景&#xff1a;当类与类之间&#xff0c;存在相同&#xff08;共性&#xff09;的内容&#xff0c;并满足子类是父类的一种&#xff0c;就可以考虑使用继承&#xff0c;来优化代码 Java中提供一个关键字extends&#xff0c;用这个关键字&#xff0c;我…...

Android 获取应用sha1和sha256

在 Android 应用开发中&#xff0c;SHA-1&#xff08;Secure Hash Algorithm 1&#xff09;值是一种哈希算法&#xff0c;常用于生成应用的数字签名。这个数字签名用于验证应用的身份&#xff0c;并确保应用在发布到设备上时没有被篡改。 以下是生成 Android 应用的 SHA-1 值的…...

c# 方法参数修饰符(out、ref、in)的区别

在C#中&#xff0c;ref、out和in是三种方法参数修饰符&#xff0c;它们在传递参数的方式和作用上有所不同。 ref修饰符&#xff1a; 传递方式&#xff1a;使用ref修饰符的参数可以是输入输出参数&#xff0c;即在方法调用前后都可以对其进行修改。 作用&#xff1a;通过ref修…...

shell 编写一个带有进度条的程序安装脚本

需求 使用 shell 写一个 软件安装脚本&#xff0c;带有进度条 示例 #!/bin/bash# 模拟软件安装的步骤列表 steps("解压文件" "安装依赖" "配置设置" "复制文件" "")# 计算总步骤数 total_steps${#steps[]}# 安装进度的初…...

服务器数据恢复-AIX PV完整镜像方法以及误删LV的数据恢复方案

AIX中的PV相当于物理磁盘&#xff08;针对于存储来说&#xff0c;PV相当于存储映射过来的卷&#xff1b;针对操作系统来说&#xff0c;PV相当于物理硬盘&#xff09;&#xff0c;若干个PV组成一个VG&#xff0c;AIX可以将容量不同的存储空间组合起来统一分配。AIX把同一个VG的所…...

首席执行官Adam Selipsky解读“亚马逊云科技的技术产品差异化”

迄今为止&#xff0c;亚马逊云科技已经参与了21世纪几乎所有的大型计算变革&#xff0c;亚马逊云科技是一个很传奇的故事&#xff0c;它始于大约20年前的一项实验&#xff0c;当时亚马逊试图出售其过剩的服务器。人们确实对此表示怀疑。为什么在线书店试图销售云服务&#xff1…...

C++ Day3

目录 一、类 【1】类 【2】应用实例 练习&#xff1a; 【3】封装 二、this指针 【1】this指针的格式 【2】必须使用this指针的场合 三、类中的特殊成员函数 【1】构造函数 i&#xff09;功能 ii&#xff09;格式 iii&#xff09;构造函数的调用时机 iv&#xff09;…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

Mobile ALOHA全身模仿学习

一、题目 Mobile ALOHA&#xff1a;通过低成本全身远程操作学习双手移动操作 传统模仿学习&#xff08;Imitation Learning&#xff09;缺点&#xff1a;聚焦与桌面操作&#xff0c;缺乏通用任务所需的移动性和灵活性 本论文优点&#xff1a;&#xff08;1&#xff09;在ALOHA…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)

引言 在人工智能飞速发展的今天&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;已成为技术领域的焦点。从智能写作到代码生成&#xff0c;LLM 的应用场景不断扩展&#xff0c;深刻改变了我们的工作和生活方式。然而&#xff0c;理解这些模型的内部…...

jmeter聚合报告中参数详解

sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample&#xff08;样本数&#xff09; 表示测试中发送的请求数量&#xff0c;即测试执行了多少次请求。 单位&#xff0c;以个或者次数表示。 示例&#xff1a;…...

图解JavaScript原型:原型链及其分析 | JavaScript图解

​​ 忽略该图的细节&#xff08;如内存地址值没有用二进制&#xff09; 以下是对该图进一步的理解和总结 1. JS 对象概念的辨析 对象是什么&#xff1a;保存在堆中一块区域&#xff0c;同时在栈中有一块区域保存其在堆中的地址&#xff08;也就是我们通常说的该变量指向谁&…...

AD学习(3)

1 PCB封装元素组成及简单的PCB封装创建 封装的组成部分&#xff1a; &#xff08;1&#xff09;PCB焊盘&#xff1a;表层的铜 &#xff0c;top层的铜 &#xff08;2&#xff09;管脚序号&#xff1a;用来关联原理图中的管脚的序号&#xff0c;原理图的序号需要和PCB封装一一…...

CVE-2023-25194源码分析与漏洞复现(Kafka JNDI注入)

漏洞概述 漏洞名称&#xff1a;Apache Kafka Connect JNDI注入导致的远程代码执行漏洞 CVE编号&#xff1a;CVE-2023-25194 CVSS评分&#xff1a;8.8 影响版本&#xff1a;Apache Kafka 2.3.0 - 3.3.2 修复版本&#xff1a;≥ 3.4.0 漏洞类型&#xff1a;反序列化导致的远程代…...

OpenHarmony标准系统-HDF框架之I2C驱动开发

文章目录 引言I2C基础知识概念和特性协议&#xff0c;四种信号组合 I2C调试手段硬件软件 HDF框架下的I2C设备驱动案例描述驱动Dispatch驱动读写 总结 引言 I2C基础知识 概念和特性 集成电路总线&#xff0c;由串网12C(1C、12C、Inter-Integrated Circuit BUS)行数据线SDA和串…...