ad_hoc_NW
夕阳_武士
采纳率64.3%
2015-10-02 07:14 阅读 2.1k

C++的函数对象与二元谓词的问题

#include
#include
#include
#include
#include
bool ab(int mem1, int mem2)
{
if (mem1 > mem2)
return true;
else
return false;
}
int main()
{
vector vec;
vec.push_back(7);
for (int i = 0; i < 10; i++)
{
vec.push_back(i);
}
cout<< *max_element(vec.begin(), vec.end(), ab)<<endl;
system("pause");
return 0;
}
为什么这样就输出的是0?难道二元谓词只能用“<”的?
求解答!!1

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • 已采纳
    fefe82 fefe82 2015-10-02 14:17

    不是只能用 < 。

    但是它并不知道你的谓词是啥,所以它会把你给它的任何东西当成 小于 关系来使用。

    你在 max_element 里给了一个 大于 当谓词,结果就是求出了最小值。

    点赞 1 评论 复制链接分享
  • crazysaofeng crazysaofeng 2015-10-02 12:03

    不是只能用 < 而是因为你重载了 max_element 你的 max_element 相当于 min_element

    
    
    点赞 1 评论 复制链接分享

相关推荐