二维数组用sort排序遇到得问题

C++,关于二维Vector数组,以任意列的数据进行排序。 问题描述:存在一个二维vector数组,例如vector<vector<int>> VIA。二维数组VIA,VIA.size() = 10,VIA[0].size() = 3;用矩阵表述就是一个十行三列的矩阵。假如数组想用第一列的数据大小进行排序,用C++函数sort()只需要采用如下代码: sort(viA.begin(), viA.end());//默认为从小到大排... 阅读详情

在用二维数组做排序得过程中,出现得一些问题,下面先看代码,代码内容可以忽视

#include<iostream>
#include<stack>
#include<string>
#include<cstring>
#include<cstdio>
#include<cstdlib>
#include<algorithm>

using namespace std;

bool cmp( int *c,  int *b) {
	if (c[0] == b[0]) {
		return c[2] < b[2];
	}
	else 
		return 	c[0] < b[0];
}



int main(void)
{
	int t;
	int a[3][300];  //问题所在 
	
	while (cin >> t) {
		
		memset(a, 0, sizeof(a) * 4);
		
		for (int i = 0; i < t; i++) {
			cin >> a[0][i] >> a[1][i];
			a[2][i] = a[1][i] - a[0][i];
			} 
			
			sort(a, a + t, cmp);
			
			int sum = 0, book[300], last_end = 0;
			memset(book, 0, sizeof(book));
			
			for (int j = 0; j < t; j++) {
				if (book[a[0][j]] == 0&&a[1][j]>=last_end) {
					book[a[0][j]] = 1;
					last_end = a[1][j];
					sum++;
				}
			}
			cout << sum << endl;
		}
}

在这个代码里面,二维数组是直接定义的,即int a[3][300],然而出现了下面的报错




根据上图,文件下面显示的algorithm可以看出,在将数组a带入sort函数时出现了错误,捣鼓了一段时间发现,用new来申请数组空间的指针数组能解决这个问题,如下代码

#include<iostream>
#include<stack>
#include<string>
#include<cstring>
#include<cstdio>
#include<cstdlib>
#include<algorithm>

using namespace std;

bool cmp(int *c, int *b) {
	if (c[0] == b[0]) {
		return c[2] < b[2];
	}
	else
		return 	c[0] < b[0];
}



int main(void)
{
	int t;
	while (cin >> t) {
		int **a = new int*[4];
		for (int k = 0; k < 4; k++) {       //修改的地方 
			a[k] = new int[t];			// 
		}
		for (int i = 0; i < t; i++) {
			cin >> a[0][i] >> a[1][i];
			a[2][i] = a[1][i] - a[0][i];
		}
		sort(a, a + t, cmp);
		int sum = 0, book[300], last_end = 0;
		memset(book, 0, sizeof(book));
		for (int j = 0; j < t; j++) {
			if (book[a[0][j]] == 0 && a[1][j] >= last_end) {
				book[a[0][j]] = 1;
				last_end = a[1][j];
				sum++;
			}
		}
		cout << sum << endl;
	}
}


锐捷路由器DNS Proxy保姆级配置教程:从零到实战,手把手教你搞定内网域名解析 本文提供锐捷路由器DNS Proxy功能的详细配置教程,从基础环境搭建到实战测试,手把手教你实现内网域名解析。涵盖上游DNS设置、内网域名映射、故障排查等关键步骤,帮助网络管理员快速解决内网访问难题,提升工作效率。 阅读详情

相关推荐

双摄像头的实时视频拼接及目标跟踪(一)

本章主要讲图像拼接算法的研究 先膜拜一下知乎大佬全面的叙述:https://www.zhihu.com/question/34535199/answer/135169187 本文图像拼接是基于opencv的图像拼接,流程分为以下几步 ...

Y.W.jian的博客 3万+

二维数组进行sort排序

对于直接对二维数组排序的话应该是有几项就列几项。但这样太麻烦了。 在这里给大家介绍一种方法(进行转化) int id[100],snow[100][100];#记得将这个二维数组设置为全局变量 for(int i = 0 ; i < 3; i++){//这个就是把数据存储 for(int j = 0; j < 3; j++) { cin >> snow[i][j]; } id[i]=i;这个id存的是每一个二维数组的行数 } sort(snow,snow+3,cmp)

qq_53126117的博客 2571

如何从零开始写小程序

看了这篇文章,即使让我现在就从头写一个能够正常运行的小程序,也没有原本想象中的那么难了。 在本文中,我们将会以一个具体的小程序为例,带领大家从零到一完成一个小程序的开发流程,并将这个小程序上传到 FinClip.com 进行小程序提审与上架操作。 我们新建了一个叫做「HelloWorld」的小程序,FIDE 在初始化小程序项目时,会自动在项目目录中补充对应所需要的项目文件。那不妨让我们先从小程序目录下的配置文件开始,逐渐揭开小程序的面纱。 使用 FIDE 编辑小程序 1. 认识 json 文件 在小程序项目

POHOU23的博客 4395

用sort方法对二维数组进行排序

用sort方法对二维数组进行排序 我解决二维数组用sort方法排序的途径是将二维数组转化为一个一维数组,再用Arrays.sort(array)排序一维数组,然后将一维数组重新赋值给二维数组 import java.util.Arrays; public class arrays { public static void main(String[] args) { int[][...

qq_42536483的博客 8415

Maya ACES工作流程配置(Arnold 及 RedShift 贴图配置规范-还原出SP-Aces流程下贴图正确的效果) PS还原Aces流程下渲染的图

*如果使用SP,项目工程如果新建的时候设置的就是Aces的流程的话,按规范正常导出即可,贴图会带上相对应的后缀,然后贴图导入材质球的时候会根据后缀自动设置相对应的色彩空间;**万一不是,就自己手动设置一下对应的色彩空间即可;然后点击选择当前的或者选择全部导入的贴图,点击右下角后,开始转换;我复制了一下,一个默认没有LUT的效果,然后另外一个是加载2个LUT后的还原效果,和渲染的效果应该是没有区别的,至少我没有看出明显的区别;把需要转换的贴图拖拽到左侧,然后右面选择需要转换到的相对应的色彩空间;...

Yuulily 7993

WPS访问权限不足怎么解决??具体怎么操作?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值。

**My Coding Family** 4171

Arrays.sort()的用法(对二维数组进行排序)。

四个方法: sort(T[] a):对指定数组进行升序排列。 sort(T[] a,int formIndex, int toIndex):对指定数组的指定范围升序排列。 sort(T[] a, Comparator<? supre T> c): 根据指定比较器产生的顺序对指定对象数组进行排序。 sort(T[] a, int formIndex, int toIndex, Comparator<? supre T> c): 根据指定比较器产生的顺序对指定对象数组的指定范围进

weixin_42632962的博客 1万+

使用R语言获取泊松回归模型的事件密度比(Incidence Rate Ratio,IRR)的95%置信区间

在泊松回归模型中,我们通常关注的是自变量对事件发生率的影响,而事件密度比(Incidence Rate Ratio,IRR)可以帮助我们理解不同自变量对事件发生率的相对影响。在本文中,我们将使用R语言来获取泊松回归模型所有系数的事件密度比的95%置信区间。通过以上步骤,我们可以使用R语言获取泊松回归模型所有系数的事件密度比的95%置信区间。为了获取事件密度比的置信区间,我们将使用。使用R语言获取泊松回归模型的事件密度比(Incidence Rate Ratio,IRR)的95%置信区间。

BugCrusher的博客 1264

sort函数对vector一维或者二维数组排序

/ 对二维数组按照纵坐标进行升序排列});return 0;

qq_71416673的博客 2853

4、风险管理、信息安全与信息管理的核心原则

本文深入探讨了风险管理、信息安全与信息管理的核心原则,涵盖Risk IT框架、ISO 31000标准以及信息安全与信息管理的关键原则。通过案例分析与实际应用挑战的解析,帮助组织更好地应对数字化时代的风险与安全问题,实现可持续发展。

bread的博客 120

CAPL与人工智能结合

AI模型是指通过机器学习算法训练得到的模型,可以用于分类、回归、聚类等任务。常见的AI模型包括神经网络、支持向量机、决策树等。在汽车电子系统中,AI模型可以用于故障诊断、驾驶行为分析、自动驾驶等场景。实时决策是指在汽车电子系统中,根据AI模型的预测结果,实时做出决策。实时决策可以用于自动驾驶、故障诊断等场景。通过本文的学习,读者应该对CAPL与人工智能结合有了初步的了解,并能够编写复杂的CAPL脚本。

闲人编程的博客 1480

C++ | sort()函数使用详解

力扣347题给你一个整数数组nums和一个整数k,请你返回其中出现频率前k高的元素。你可以按任意顺序返回答案。碰到需要使用sort()函数对二维数组进行排序的情况,这里详细记录一下sort()的用法。提示以下是本篇文章正文内容,下面案例可供参考终于不看题解完成了一道medium的题目,纪念一下!!!...

大柳_的博客。 7661

多目标优化AI Agent:增强LLM的复杂决策能力

在人工智能领域,尤其是自然语言处理(NLP)和大语言模型(LLM)的应用中,决策问题往往涉及多个目标的平衡与优化。例如,在智能客服系统中,既要提高客户满意度,又要降低运营成本;在自动驾驶中,既要确保安全,又要追求行驶效率。传统的单目标优化方法难以满足这种复杂场景的需求,因此多目标优化成为了一种必然趋势。AI Agent是一种智能系统,能够通过感知环境、处理信息并采取行动来实现特定目标。它可以是一个软件程序,也可以是一个物理设备。NSGA-II:一种基于群体的多目标优化算法,通过遗传算法的思想进行迭代优化。

AI天才研究院 1300

sort()方法对二维数组排序的应用

以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。 示例 1: 输入:intervals = [[1,3],[2,6],[8,10],[15,18]] 输出:[[1,6],[8,10],[15,18]] 解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6]. 示例 2: 输入:intervals = [[1,4],[4,5]]

破浪会有时的博客 3512

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

C++二维数组sort排序问题

以往遇到行排列问题(按每行的字典序排序)的时候,总是使用结构体来进行排序,但是如何使用二维数组来达到同样的效果呢?实验内容:利用二维数组进行“三级排序”测试1:使用c++内置的普通型二维数组#include &lt;algorithm&gt; #include &lt;iostream&gt; using namespace std; bool cmp(int a[], int b[]) { ...

Salmon_lee的博客 8万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

C++二维数组sort排序问题_c++ sort 二维数组排序

没想到,两次尝试都以失败告终。分析原因,应该是数组名a和一维数组名a[0]、a[1]均为const类型指针,排序时无法交换它们而导致错误。虽然过程有些麻烦,但是总算得到了预期的结果。测试1:使用c++内置的普通型二维数组。测试2:动态创建二维数组。

2401_85013604的博客 1905

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

C++ STL中sort对于二维数组的排序问题

//声明二维数组中的第一维的大小 int **a = new int*[1002]; //比较函数,比较的是二维数组的第一列的数据 //相当于a[][0] bool compare(int a[], int b[]){ return a[0] < b[0]; } //对数组的第二维进行操作 for(int i=0; i<n; i++){ a[i] = new int[2]; ...

weixin_42059429的博客 1937

Java中Arrays.sort自定义一维数组、二维数组的排序(以及出现的问题)

一维数组 方法一: //降序 Arrays.sort(arr, new Comparator<Integer>() { public int compare(Integer a, Integer b) { return b-a; } }); 问题: 可以试着把arr赋值为以下值: 也就是int的边界值 Integer[] arr = {-2147483648, 1, 2147483647}; 代码: Integer[] arr = {-2147483648,

weixin_44915226的博客 3987

sort进行二维数组的排序

FateInTheSky的博客 1126

第八章第十六题(对二维数组排序)(Sort 2D arrays)

第八章第十六题(对二维数组排序)(Sort 2D arrays) *8.16(对二维数组排序)编写一个方法,使用下面的方法头对二维数组排序: public static void sort(int m[][]) 这个方法首先按行排序,然后按列排序。 例如:数组{{4,2},{1,7},{4,5},{1,2},{1,1},{4,1}}将被排序为{{1,1},{1,2},{1,7},{4,1},{4,2},{4,5}}。 *8.16(Sort 2D arrays)Write a method to sort

jxh1025_的博客 1157

Java数组排序 Arrays.sort

文章目录前言一、Arrays.sort1.Arrays.sort()对类的排序2.Arrays.sort()对二维数组的排序总结 前言 在Java中,数组排序是经常会运用的,我们常使用的Arrays.sort对数组进行排序,但是一般默认为int或者其他基本数据类型,那么如何使用Arrays.sort实现对二维数组的排序和怎么实现对类的排序? 一、Arrays.sort 查看Arrays的源码可以看到这个工具类里面关于有很多种方法,如下图所示: 除了对一些基本数据类型的排序我们可以看到最下面的两种方法:.

clearkoro1的博客 665

学习如何在js中指定按照数组中某一个值排序sort方法

默认情况下,sort() 方法将按字母和升序将值作为字符串进行排序。

徊忆羽菲 1879

leetcode 406. 根据身高重建队列(二维数组排序,list排序,list转数组,数组转list)

该大佬 解题思路以及解题代码都非常精妙,遂记录于此学习。 目录一、解题思路:二、解题核心代码三、二维数组排序四、list排序五、list转数组六、数组转list 一、解题思路: 将人群的身高按降序排列,k按升序排列。 然后创建一个有序的list,将每个人按其k值插入list,全部插入完成以后即可得到结果。 解释:由于前面的人数已经是按降序排列了,所以插入到位置k后,前面一定有k个大于等于其身高的人。前提是k按升序排列!! // [7,0], [7,1], [6,1], [5,0], [5,2], [4,.

qq_34922085的博客 482

Perl实现类似linux的sort命令的功能

需求分析 option description -n, --numeric-sort 按数值排序 -s,–split 指定列分隔符,默认用空格 -k 指定列号,支持多列 -r 默认升序,-r让结果降序输出 -u 去除重复项 -o 指定输出文件 -h 输出help信息 思路 读取文件并根据输入的命令将数据保存到二维数组中。比如 sortfile test -k 1-3;首先将test中的每一行用空格进行分割,然后将每行1-3列的内容添加到数组中,再把所分割行添加到数

qq_42328206的博客 329

C++ std::sort 自定义排序之二维数组排序应用

以二维数组内第一个元素为基准进行 升序 排序。以二维数组内第二个元素为基准进行 降序 排序。

zhouyuanqwe的博客 2431

对二维数组从两个维度进行排序(Arrays.sort()方法使用Lambada表达式)

我们可以把 Lambda 表达式理解为是一段可以传递的代码(将代码作为实参),也可以理解为函数式编程,将一个函数作为参数进行传递。​Lambda 表达式的主要作用就是可以用于简化创建匿名内部类对象,Lambda 表达式的代码块将会用于实现抽象方法的方法体,Lambda 表达式就相当于一个匿名方法。{ } 中部分,接收来自 ( ) 中的参数,完成一定的功能。可以看到,数组是先按照第二个维度排序的,当第二个维度的元素相等时,则按照第一个维度的元素进行排序。方法,传入参数,利用Lambada表达式进行判断。

番茄炒蛋三分糖 1865
上一篇: 牛客网练习赛14 — n的约数
下一篇: 分数取模
Y390d
博客等级 码龄9年 11粉丝 165原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值