C++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));
}
它们有相同的效果。我真的不太理解它们之间的区别。
<=>
的类型成为非类型模板参数的讨论。这个运算符的影响超出了仅仅替换一种仅适用于算术类型的操作。 - chris(2 ** (sizeof(char) * CHAR_BIT))
? - iBug