查找算法:conut if的问题

img

img

img

为什么输出结果与预想的刚好反过来了,我条件应该没有写错呀,不知道是哪一步出了问题

呃呃,你小括号运算符重载的逻辑恰好反了,你把 Person("诸葛亮", 30) 作为函数,相当于:

bool testCond(const Person& other) {
  return 30 > other.m_Age;
}

应该可以看出,这里就是筛选出小于 30 岁的人吧。所以你需要把你的小括号重载的返回值取反即可:

bool operator() (const Person& p) {
  return this->m_Age < p.m_Age;
}

这样就能筛选出比孔明大的人了。