【问题标题】:I don't know how a Boolean function can return strings我不知道布尔函数如何返回字符串
【发布时间】: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() 不代表严格-弱排序。

标签: c++ string boolean


【解决方案1】:
bool cmp(string a, string b){
   return a+b>b+a;
}

完全一样

bool cmp(string a, string b){
    if(a+b>b+a)
        return true;
    else
        return false;
}

返回的不是字符串,而是表达式的结果,只能是布尔值。

【讨论】:

  • 字符串如何出现在if 条件中? :P 很好的解释
  • 指出由于operator precedence,a+b>b+a 等价于(a+b) > (b+a) 可能也很有用。也许这与 OP 的困惑有关。
猜你喜欢
  • 2023-03-20
  • 1970-01-01
  • 2017-06-21
  • 1970-01-01
  • 2018-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多