如何对二维字符数组进行排序

有时候需要把

char str[][] = {"abc", "bcd", "efg", "gdk"}

这样的进行排序?

输出

abc

bcd

efg

gdk

如果你直接sort(str, str + 4, cmp)这样是不行的,因为字符串的赋值操作都没有定义

就是你不能用一个中间变量char temp[]

然后temp = str[0]; str[0] = str[1]; str[1] = temp;这样。是不行的。

因为sort里面会调用swap(str1, str2)来调换字符串嘛,所以不行。

那么我们知道,结构体的赋值操作,是有定义的。可以用中间变量来完成。

所以我们把它定义成

struct node {

  char str[111];

  bool operator < (const struct node & rhs) const {

    return strcmp(str, rhs.str) > 0;

  }

}a[maxn];

这样就能sort了

posted on 2016-10-30 09:50  stupid_one  阅读(656)  评论(0编辑  收藏  举报

导航