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

C++ vector 自定义排序规则(vector<vector<int>>、vector<pair<int,int>>)

vector< int >

vector<int> vec{1,2,3,4};//默认从小到大排序  1234
sort(vec.begin(),vec.end());
//从大到小排序 4321
sort(vec.begin(),vec.end(),greater<int>());

二维向量vector<vector< int >>

vector<vector<int>> vec{{0,2},{1,5},{1,9},{4,6},{5,9},{8,10}};//默认优先对第一元素进行从小到大排序,第一元素相同的,按照第二元素从小到大排序
sort(vec.begin(),vec.end()); //[0,2],[1,5],[1,9],[4,6],[5,9],[8,10]

定义cmp函数

1.外部定义

  • 平时的编译器里面自己写的时候 cmp函数前面加不加static都行,但是leetcode刷题时,代码还有实现都是写在类里面的,cmp函数前面一定要加上static修饰。因此建议所有的返回类型都为static bool 类型。
  • 这里不能使用C++11中的auto关键词进行自动类型推导
  • C++ sort函数自定义cmp函数中参数带&符号
static bool cmp(const vector<int>& v1, const vector<int>& v2){//如果第一元素相等,则比较第二元素if (v1[0] == v2[0])return v1[1] < v2[1];return v1[0] > v2[0];
}vector<vector<int>> vec{{0,2},{1,5},{1,9},{4,6},{5,9},{8,10}};
sort(vec.begin(),vec.end(),cmp);
//[8,10],[5,9],[4,6],[1,5],[1,9],[0,2]

2.匿名函数Lambda

vector<vector<int>> vec{{0,2},{1,5},{1,9},{4,6},{5,9},{8,10}};sort(vec.begin(),vec.end(),[&](const vector<int> &v1, const vector<int> &v2){//如果第一元素相等,则比较第二元素if (v1[0] == v2[0])return v1[1] < v2[1];return v1[0] > v2[0];
});
//[8,10],[5,9],[4,6],[1,5],[1,9],[0,2]

可以使用auto

sort(vec.begin(),vec.end(),[&](const auto &v1, const auto &v2){//如果第一元素相等,则比较第二元素if (v1[0] == v2[0])return v1[1] < v2[1];return v1[0] > v2[0];
});

vector<pair<int, int>>

初始化

vector<pair<int,int>> vec;1. vec.emplace_back(1,2);
2. 能够直接用map转化
//unordered_map<int,int> map;
vector<pair<int,int>> vec(map.begin(),map.end());

cmp排序

vector<pair<int,int>> vec;
vec.emplace_back(0,2);
vec.emplace_back(1,5);
vec.emplace_back(1,9);
vec.emplace_back(4,6);
vec.emplace_back(5,9);
vec.emplace_back(8,10);//默认按第一元素进行从小到大排序
sort(vec.begin(),vec.end());
//[0,2],[1,5],[1,9],[4,6],[5,9],[8,10]

1.外部定义

static bool cmp(const pair<int, int> &a, const pair<int, int> &b) {if(b.first == a.first)return a.second < b.second;return a.first > b.first;
}sort(vec.begin(),vec.end(),cmp);
//[8,10],[5,9],[4,6],[1,5],[1,9],[0,2]

2.匿名函数Lambda

sort(vec.begin(),vec.end(),[&](const pair<int, int> &a, const pair<int, int> &b) {if(b.first == a.first)return a.second < b.second;return a.first > b.first;
});
//[8,10],[5,9],[4,6],[1,5],[1,9],[0,2]

这里也可以使用auto关键词,与上面用法一样

相关文章:

C++ vector 自定义排序规则(vector<vector<int>>、vector<pair<int,int>>)

vector< int > vector<int> vec{1,2,3,4};//默认从小到大排序 1234 sort(vec.begin(),vec.end()); //从大到小排序 4321 sort(vec.begin(),vec.end(),greater<int>());二维向量vector<vector< int >> vector<vector<int>> vec{{0…...

机器学习 Q-Learning

对马尔可夫奖励的理解 看的这个教程 公式&#xff1a;V(s) R(s) γ * V(s’) V(s) 代表当前状态 s 的价值。 R(s) 代表从状态 s 到下一个状态 s’ 执行某个动作后所获得的即时奖励。 γ 是折扣因子&#xff0c;它表示未来奖励的重要性&#xff0c;通常取值在 0 到 1 之间。…...

产品设计心得体会 优漫动游

产品设计需要综合考虑用户需求、市场需求和技术可行性&#xff0c;从而设计出能够满足用户需求并具有市场竞争力的产品。以下是我在产品设计方面的心得体会&#xff1a; 产品设计心得体会 1.深入了解用户需求&#xff1a;在产品设计之前&#xff0c;需要进行充分的用户调研…...

前端--CSS

文章目录 CSS的介绍 引入方式 代码风格 选择器 复合选择器 (选学) 常用元素属性 背景属性 圆角矩形 Chrome 调试工具 -- 查看 CSS 属性 元素的显示模式 盒模型 弹性布局 一、CSS的介绍 层叠样式表 (Cascading Style Sheets). CSS 能够对网页中元素位置的排版进行像素级精…...

实操指南|如何用 OpenTiny Vue 组件库从 Vue 2 升级到 Vue 3

前言 根据 Vue 官网文档的说明&#xff0c;Vue2 的终止支持时间是 2023 年 12 月 31 日&#xff0c;这意味着从明年开始&#xff1a; Vue2 将不再更新和升级新版本&#xff0c;不再增加新特性&#xff0c;不再修复缺陷 虽然 Vue3 正式版本已经发布快3年了&#xff0c;但据我了…...

系统架构设计:15 论软件架构的生命周期

目录 一 软件架构的生命周期 1 需求分析阶段 2 设计阶段 3 实现阶段 4 构件组装阶段...

金山wps golang面试题总结

简单自我介绍如果多个协程并发写map 会导致什么问题如何解决&#xff08;sync.map&#xff0c;互斥锁&#xff0c;信号量&#xff09;chan 什么时候会发生阻塞如果 chan 缓冲区满了是阻塞还是丢弃还是panicchan 什么时候会 panic描述一下 goroutine 的调度机制goroutine 什么时…...

计算机视觉实战--直方图均衡化和自适应直方图均衡化

计算机视觉 文章目录 计算机视觉前言一、直方图均衡化1.得到灰度图2. 直方图统计3. 绘制直方图4. 直方图均衡化 二、自适应直方图均衡化1.自适应直方图均衡化&#xff08;AHE&#xff09;2.限制对比度自适应直方图均衡化&#xff08;CRHE&#xff09;3.读取图片4.自适应直方图均…...

501. 二叉搜索树中的众数

501. 二叉搜索树中的众数 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right class Solution:def findMode(self, root: Option…...

【Linux】常用命令

目录 文件解压缩服务器文件互传scprsync 进程资源网络curl发送简单get请求发送 POST 请求发送 JSON 数据保存响应到文件 文件 ls,打印当前目录下所有文件和目录; ls -l,打印每个文件的基本信息 pwd,查看当前目录的路径 查看文件 catless&#xff1a;可以左右滚动阅读more :翻…...

机器人制作开源方案 | 齿轮传动轴偏心轮摇杆简易四足

1. 功能描述 齿轮传动轴偏心轮摇杆简易四足机器人是一种基于齿轮传动和偏心轮摇杆原理的简易四足机器人。它的设计原理通常如下&#xff1a; ① 齿轮传动&#xff1a;通过不同大小的齿轮传动&#xff0c;实现机器人四条腿的运动。通常采用轮式齿轮传动或者行星齿轮传动&#xf…...

Windows中将tomcat以服务的形式安装,然后在服务进行启动管理

Windows中将tomcat以服务的形式安装,然后在服务进行启动管理 第一步&#xff1a; 在已经安装好的tomcat的bin目录下&#xff1a; 输入cmd&#xff0c;进入命令窗口 安装服务&#xff1a; 输入如下命令&#xff0c;最后是你的服务名&#xff0c;避免中文和特殊字符 service.…...

解决ERROR: No query specified的错误以及\G 和 \g 的区别

文章目录 1. 复现错误2. 分析错误3. 解决问题4. \G和\g的区别 1. 复现错误 今天使用powershell连接数据库后&#xff0c;执行如下SQL语句&#xff1a; mysql> select * from student where id 39 \G;虽然成功查询除了数据&#xff0c;但报出如下错误的信息&#xff1a; my…...

mysql中SUBSTRING_INDEX函数用法详解

MySQL中的SUBSTRING_INDEX函数用于从字符串中提取子字符串&#xff0c;其用法如下&#xff1a; SUBSTRING_INDEX(str, delim, count)参数说明&#xff1a; str&#xff1a;要提取子字符串的原始字符串。delim&#xff1a;分隔符&#xff0c;用于确定子字符串的位置。count&am…...

AndroidStudio报错:android.support.v4.app.Fragment

解决办法一 android.support.v4.app.Fragment替换为android.app.Fragment 解决办法二 有时太多&#xff0c;先类型过去再说。 找到gradle.properties&#xff0c;修改&#xff1a; android.useAndroidXfalse android.enableJetifierfalse...

今年这情况,还能不能选计算机了?

在知乎上看到一个有意思的问题&#xff0c;是劝退计算机的。 主要观点&#xff1a; 计算机从业人员众多加班&#xff0c;甚至需要99635岁危机秃头 综上所属&#xff0c;计算机不仅卷&#xff0c;而且还是一个高危职业呀&#xff0c;可别来干了。 关于卷 近两年确实能明显感觉…...

Elastic Cloud v.s. Zilliz Cloud:性能大比拼

Elastic Cloud v.s. Zilliz Cloud:性能大比拼 Zilliz 经常会收到来自开发者和架构师的提问:“Zilliz Cloud 和 Elastic Cloud 比起来,谁进行向量处理能力比较强?” 诸如此类的问题很多,究其根本,大都是开发者/架构师在为语义相似性检索系统进行数据库选型时缺少决策依据有…...

设计模式03———包装器模式 c#

首先我们打开一个项目 在这个初始界面我们需要做一些准备工作 创建基础通用包 创建一个Plane 重置后 缩放100倍 加一个颜色 &#xff08;个人喜好&#xff09;调节渐变色 可更改同种颜色的色调 &#xff08;个人喜好&#xff09; 调节天空盒 准备工作做完后 接下我们做【…...

《动手学深度学习 Pytorch版》 8.3 语言模型和数据集

8.3.1 学习语言模型 依靠在 8.1 节中对序列模型的分析&#xff0c;可以在单词级别对文本数据进行词元化。基本概率规则如下&#xff1a; P ( x 1 , x 2 , … , x T ) ∏ t 1 T P ( x t ∣ x 1 , … , x t − 1 ) P(x_1,x_2,\dots,x_T)\prod^T_{t1}P(x_t|x_1,\dots,x_{t-1}) …...

Linux桌面环境(桌面系统)

早期的 Linux 系统都是不带界面的&#xff0c;只能通过命令来管理&#xff0c;比如运行程序、编辑文档、删除文件等。所以&#xff0c;要想熟练使用 Linux&#xff0c;就必须记忆很多命令。 后来随着 Windows 的普及&#xff0c;计算机界面变得越来越漂亮&#xff0c;点点鼠标…...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机&#xff08;Finite Automaton, FA&#xff09;到正规文法&#xff08;Regular Grammar&#xff09;转换器&#xff0c;它配备了一个直观且完整的图形用户界面&#xff0c;使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

HybridVLA——让单一LLM同时具备扩散和自回归动作预测能力:训练时既扩散也回归,但推理时则扩散

前言 如上一篇文章《dexcap升级版之DexWild》中的前言部分所说&#xff0c;在叠衣服的过程中&#xff0c;我会带着团队对比各种模型、方法、策略&#xff0c;毕竟针对各个场景始终寻找更优的解决方案&#xff0c;是我个人和我司「七月在线」的职责之一 且个人认为&#xff0c…...

高抗扰度汽车光耦合器的特性

晶台光电推出的125℃光耦合器系列产品&#xff08;包括KL357NU、KL3H7U和KL817U&#xff09;&#xff0c;专为高温环境下的汽车应用设计&#xff0c;具备以下核心优势和技术特点&#xff1a; 一、技术特性分析 高温稳定性 采用先进的LED技术和优化的IC设计&#xff0c;确保在…...

「Java基本语法」变量的使用

变量定义 变量是程序中存储数据的容器&#xff0c;用于保存可变的数据值。在Java中&#xff0c;变量必须先声明后使用&#xff0c;声明时需指定变量的数据类型和变量名。 语法 数据类型 变量名 [ 初始值]; 示例&#xff1a;声明与初始化 public class VariableDemo {publi…...

uniapp获取当前位置和经纬度信息

1.1. 获取当前位置和经纬度信息&#xff08;需要配置高的SDK&#xff09; 调用uni-app官方API中的uni.chooseLocation()&#xff0c;即打开地图选择位置。 <button click"getAddress">获取定位</button> const getAddress () > {uni.chooseLocatio…...