C++中如何用STL的sort()对二维数组排序

用sort直接对二维数组排序,还请告诉我一下吧,感激不尽!!比如inta[1000][3];根据a[i][0]作为关键码对a排序。即每次交换a[i][0],a[i][1]... 用sort 直接对 二维数组排序,还请告诉我一下吧,感激不尽!!
比如 int a[1000][3]; 根据 a[i][0] 作为关键码 对a排序。
即每次交换 a[i][0],a[i][1],a[i][2]三个元素
我再说下我的意图把, 例子:
int a[5][3];
a[0]={2,5,2};
a[1]={5,4,2};
a[2]={3,1,6};
a[3]={1,8,2};
a[4]={0,4,4};
我想得到结果 :
a[0] = {0,4,4}; // 原来的 a[4]
a[1] = {1,8,2}; // 原来的 a[3]
a[2] = {2,5,2}; // 原来的 a[0]
a[3] = {3,1,6}; // 排序后 按 a[i][0] (0<=i<5)递增的顺序。
a[4] = {5,4,2};
顺便说一下,夜の协奏曲 你的代码通不过,我用的是 VS 2008 。提示错误:
错误 2 error C2106: “=”: 左操作数必须为左值 c:\program files\microsoft visual studio 9.0\vc\include\algorithm 3131 The C++ Programming test 2

明日青蛙 你的代码会是提示同样的错误!
最后补一句 ,谁要是写出代码,并调试成功了,我会再追加 100 分的。
展开
 我来答
性季能晓骞
2019-05-10 · TA获得超过3550个赞
知道小有建树答主
回答量:3087
采纳率:28%
帮助的人:158万
展开全部
#include
<iostream>
#include
<algorithm>
#include
<ctime>
using
namespace
std;
bool
cmp(int
*p,int
*q)
{
if(p[0]==q[0])
{
if(p[1]==q[1])
{
return
p[2]<q[2];
}
else
return
p[1]<q[1];
}
else
return
p[0]<q[0];
}
int
main()
{
srand(time(0));
int
i;
int
**a=new
int*[1000];
for(i=0;i<1000;++i)
{
a[i]=new
int[3];
a[i][0]=rand()%1000;
a[i][1]=rand()%1000;
a[i][2]=rand()%1000;
//printf("%d\\t%d\\t%d\
",a[i][0],a[i][1],a[i][2]);
}
sort(a,a+1000,cmp);
/*cout<<"After
sort"<<endl;
for(i=0;i<1000;++i)
{
printf("%d\\t%d\\t%d\
",a[i][0],a[i][1],a[i][2]);
}*/
return
0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
c念傷
2015-11-12
知道答主
回答量:73
采纳率:0%
帮助的人:48.6万
展开全部
sort(a,a+n)a是数组n是数组的大小
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a190561443
2009-07-22 · 超过32用户采纳过TA的回答
知道大有可为答主
回答量:239
采纳率:0%
帮助的人:93.2万
展开全部
我也不知道二维数组用sort怎么排, 我一般弄成结构体后再进行排序的!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式