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个回答

不是只能用 < 。

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

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

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


Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问