当前位置: 首页 > 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;…...

数据血缘是什么?怎么建设数据血缘?

今年跟十几个企业老板聊AI落地&#xff0c;发现大家都有一个共识&#xff1a;不上AI是等死&#xff0c;乱上AI是找死。为什么&#xff1f;因为AI这玩意儿就像顶级厨师&#xff0c;食材不新鲜、来历不明&#xff0c;做出来的菜照样能毒倒一片。这里的食材&#xff0c;就是数据。…...

Ti AWR2243实测:毫米波雷达通道积累,选相干还是非相干?一个实验讲清楚

Ti AWR2243毫米波雷达通道积累策略&#xff1a;工程实践中的深度抉择 毫米波雷达在现代自动驾驶系统中扮演着关键角色&#xff0c;而通道积累策略的选择直接影响着目标检测的精度与系统实时性。面对192个虚拟通道的海量数据&#xff0c;工程师们常常陷入两难&#xff1a;是追求…...

猫抓:创新视角下的浏览器资源嗅探技术完全指南

猫抓&#xff1a;创新视角下的浏览器资源嗅探技术完全指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 猫抓&#xff08;cat-catch&#xff09;…...

从零构建知识图谱:基于NLP的实体关系抽取与Neo4j存储实践

1. 项目概述&#xff1a;从文本到知识的桥梁最近几年&#xff0c;知识图谱这个概念在自然语言处理&#xff08;NLP&#xff09;和人工智能领域火得不行。简单来说&#xff0c;它就是把散落在海量文本里的“知识点”——比如实体&#xff08;人物、地点、概念&#xff09;和它们…...

Adobe-GenP:告别订阅烦恼,5分钟解锁Adobe全家桶完整功能

Adobe-GenP&#xff1a;告别订阅烦恼&#xff0c;5分钟解锁Adobe全家桶完整功能 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP 你是否曾被Adobe Creative Cloud的高…...

数字视频发送器(SDI编码器)

这是一款数字视频发送器&#xff08;SDI编码器&#xff09;&#xff0c;功能对标Genum公司的GV7600和Semtech的GS2972。该芯片主要用于将并行数字视频信号&#xff08;如BT.1120&#xff09;转换为串行SDI信号&#xff0c;通过75欧姆同轴线缆进行传输。特征&#xff1a;传输速率…...

nardeas/ssh-agent:增强版SSH代理工具的设计、部署与实战应用

1. 项目概述&#xff1a;一个被低估的SSH代理工具如果你和我一样&#xff0c;日常需要在多台服务器、开发机、跳板机之间穿梭&#xff0c;手里捏着十几把甚至几十把SSH密钥&#xff0c;那你一定对ssh-agent这个工具又爱又恨。爱的是&#xff0c;它确实能让你免去一遍遍输入密钥…...

Taotoken的Token Plan套餐相比按量计费能为长期项目节省多少

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Taotoken的Token Plan套餐相比按量计费能为长期项目节省多少 对于需要长期、稳定调用大模型API的项目而言&#xff0c;成本的可预测…...

STM32H7 SPI双机通信,为什么我强烈推荐你用硬件NSS引脚?一个上电时序问题引发的血案

STM32H7 SPI双机通信中硬件NSS引脚的工程实践价值 两块STM32H7开发板通过SPI进行通信时&#xff0c;你是否遇到过这样的场景&#xff1a;明明代码逻辑正确&#xff0c;但通信就是不稳定&#xff0c;时而正常时而失败&#xff1f;更令人困惑的是&#xff0c;这种问题往往与上电顺…...

APK Installer终极指南:Windows平台Android应用部署完全手册

APK Installer终极指南&#xff1a;Windows平台Android应用部署完全手册 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 在跨平台应用生态日益融合的今天&#xff0c;开…...