这道题又一次的戳到了我的盲区;
一定要注意sort和cmp的返回值;
其实可以这么理解;对于cmp,我们的目的是让数据按照给出的形式进行排序,例如我们想让序列递增,则排序的方式就为:a<b;这样序列中处处都是a<b;同理,如果构建了struct,其中包括一个string,我们希望整个序列按照字典序递增,该怎么办?这个时候就要用到strcmp函数来做辅助;默认情况下strcmp(a,b),当a的字典序大于b的时候,返回的就是1,等于为0,小于返回-1;
所以如果a>b,则strcamp(a,b)>0但是我们希望的是递增,也就是a<b,所以对应的情况就是strcamp(a,b)返回-1,所以这个时候应该返回的判定条件就是strcmp(a,b)<0,也就是符合字典序a<b的那种情况;#include#include #include #include #include #include #include using namespace std;using std::vector;const int maxn=100010;struct node{ int id; char name[9]; int grade;}mem[maxn];bool cmp1(node a,node b){ return a.id