首页 > 解决方案 > 使用没有向量的标准排序对二维数组进行排序

问题描述

#include <bits/stdc++.h>
using namespace std;

bool cmp(int *a, int *b){
 if(a[0] == b[0]) return a[1] < b[1];
 else return a[0] < b[0];
}
int main(){
 int arr[10][2];
 int n=10;

 for(int i=0;i<n;i++) scanf(" %d %d",&arr[i][0], &arr[i][1]);
 sort(arr, arr+n,cmp);
}

这段代码只是简单的事情。你的输入就像

3 2
3 1
1 1
2 2
6 6
4 4
5 5
7 7
8 8
9 9

和输出应该像

1 1
2 2
3 1
3 2
4 4
5 5
6 6
7 7
8 8
9 9

你可以简单地认为pair<int,int>。

假设 pair<int,int> 到 pair<a,b>。

我想先对“a”进行排序。如果'a'相同,那么你应该按'b'排序。(升序排序)

所以我一直在尝试像这样对数组进行排序。但它不起作用。

是的,我知道如果你使用“矢量”很容易,但我不想使用它。我将只使用 std::sort 。

当然你不能编译它,因为它是错误的。

我用谷歌搜索了这个问题,但找不到任何东西。有没有办法解决这个问题?

如果你运行它会有很多错误代码,所以这是编译器直接带给我的错误代码。

1849 11 C:\Program Files (x86)\Dev-Cpp\MinGW64\lib\gcc\x86_64-w64-mingw32\4.9.2\include\c++\bits\stl_algo.h [错误] 数组必须用大括号初始化- 封闭式初始化器

标签: c++sorting

解决方案


推荐阅读