有时候需要把

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了