【发布时间】:2021-02-04 10:39:39
【问题描述】:
这个布尔函数如何返回a+b>b+a? a+b>b+a 有什么不同吗?如果您能解释此布尔函数中使用的概念,我们将不胜感激。
bool cmp(string a, string b){
return a+b>b+a;
}
'cmp' 用于对向量中的元素进行排序
sort(temp.begin(), temp.end(), cmp)
【问题讨论】:
-
反问:
int x = 42; int y = 123; auto b = x < y;b的类型是什么? -
看some documentation on the
>operator and its companions。所有这些运算符的返回类型是什么? -
是什么让你认为这个函数返回一个字符串?事实并非如此。
-
假设您的代码中的
string是std::string,它支持返回bool的比较运算符(==、>等)。a+b > b + a计算两个字符串(a + b和b + a)并返回使用比较运算符比较它们的结果。 -
@Eljay - 不仅仅是奇怪。这也意味着
std::sort()将表现出未定义的行为,因为cmp()不代表严格-弱排序。