【发布时间】:2012-12-21 20:56:19
【问题描述】:
我有一个二维数组,只包含 0 或 1。 我想使用 STL 排序算法按行的降序对它进行排序(每列没有变化)。但我不知道如何传递参数以及如何在 sort(first, last, comp); 中编写比较函数; 喜欢:
0 1 1 1
1 1 0 1
1 0 1 0
会这样排序:
1 1 0 1
1 0 1 0
0 1 1 1
我的数据结构是这样的:
int **table = 0;
table = new int *[row];
for(int i=0;i<row;i++)
table[i] = new int[column];
我只能这样写排序函数:
sort(a[0], a[0]+row, compare_function);
bool compare_function(int a[], int b[])
{
int i =0;
while(a[i]==0 ||a[i]==1)
{
if(a[i]>b[i])
return true;
else
i++;
}
return false;
}
但它不起作用。有人能帮我吗? 非常感谢。
【问题讨论】:
-
这不是真的吗?
[i]==0 ||a[i]==1(除了当您在数组的定义区域之外读取时,在这种情况下内容完全未定义 - 在您到达内存中导致程序崩溃的位置之前,可能会连续出现大量零! ) -
0 1 1 1到1 1 0 1??那不是排序