В С++ 20 появился новый оператор сравнения <=>
. Однако я думаю, что в большинстве случаев простое вычитание хорошо работает:
int my_strcmp(const char *a, const char *b) {
while (*a == *b && *a != 0 && *b != 0) {
a++, b++;
}
// Version 1
return *a - *b;
// Version 2
return *a <=> *b;
// Version 3
return ((*a > *b) - (*a < *b));
}
Они имеют тот же эффект. Я не могу понять разницу.