二维数组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类型的
#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重新封装回避高维数组的。