读书人

二维数组sort排序解决思路

发布时间: 2012-03-12 12:45:33 作者: rapoo

二维数组sort排序
#include <iostream>
#include <algorithm>
using namespace std;
int main(int argc, char *argv[])
{
char asd[5][4]={"987","654","321","213","123"};
sort(asd[0],asd[0]+5);
for(int i=0;i<5;i++)
cout<<asd[i]<<" ";
cout<<endl;
return 0;
}
我是打算前五个字符窜进行排序从小到大排,这么使用sort是错的
问各位大牛,应该如何写
谢谢

[解决办法]
你的写法显然不对,在两个元素交换位置的时候做不到。可以改为string类型的

C/C++ code
#include <iostream>#include <algorithm>#include <string>      // 1using namespace std;int main(int argc, char *argv[]){    string asd[5] = {"987","654","321","213","123"};  // 2    sort(asd, asd + 5);    for(int i=0;i<5;i++)        cout<<asd[i]<<" ";    cout<<endl;    return 0;}
[解决办法]
C++的二维数组并不是“数组的数组”,char asd[5][4]其实相当于char asd[20]。
[解决办法]
个人理解:
int data[100][100]

如果你比较data[1]和data[2],sort会把他们看作两个对象。那么,赋值和比较的操作呢?系统没有定义

但我不太确定,如果重载 const int*的相关函数,是否能实现这一点?

如果说的不对,希望楼下各位能指出错误。之前这种情况,我都是通过用struct重新封装回避高维数组的。

读书人网 >C++

热点推荐