0

我正在尝试使用 find_if 布尔函数在以下情况下返回 true:

  1. Z = <10;
  2. name="john"(全部小写)

我的代码:

/* predicate for find_if */
bool exam_pred(const exam_struct &a)
{
  if ((a.Z=<10)&&(a.name="john")) 
  {
     return true;
  }   
}

exam_struct{
  int x,y;
  double Z;
  string name;
};

我设置时它不会编译a.name="john"。所以我的问题是如何实现a.name="john";我的布尔值?

4

2 回答 2

3

您确实应该使用==运算符。

我之前建议 strcmp 是错误的,因为您使用的是字符串。

代码:

struct exam_struct {
    int x, y;
    double Z;
    string name;
};

/* predicate for find_if */
bool exam_pred(const exam_struct& a)
{
    return a.Z <= 10 && a.name=="john";
}

false请注意,在您的原始代码中,您在检查 false 时不要返回。

于 2013-05-12T22:41:30.783 回答
2

=是赋值运算符。用于==相等比较。较小或等于运算符是<=,不是=<

于 2013-05-12T22:40:04.437 回答