gpt4 book ai didi

c++ - 如何在 includes() 算法中使用 greater_equal 谓词?

转载 作者:行者123 更新时间:2023-11-27 23:12:00 27 4
gpt4 key购买 nike

我试图将 greater_equal predicateincludes() 算法 一起使用。我写了下面的代码:

#include <iostream>
#include <algorithm>
#include <functional>

int main()
{
int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 10, 9, 10};
int b[] = {4, 3, 5, 1, 2, 6, 8, 9, 7, 10, 11};
unsigned int alen = sizeof(a) / sizeof(int), blen = sizeof(b) / sizeof(int);
std::sort(a, a + alen);
std::sort(b, b + blen);

if(std::includes(a, a + alen, b, b + blen, std::greater_equal<int>()))
std::cout << "a contains b" << std::endl;
}

我期望这会输出 a contains b 因为谓词 greater_equal predicate 应该满足 b 中的所有元素 a,但它没有。我对它的用法有点困惑。请帮忙。

最佳答案

与排序序列的所有算法一样,这要求比较器与用于排序序列的比较器相同;并且 greater_equal 对此无效,因为它没有给出严格的排序。

includes 不会检查每对输入的比较器是否为真;它根据比较器定义的顺序检查两个值是否相等。也就是说,它检查 !comp(a,b) && !comp(b,a)。对于像 greater_equal 这样的非严格比较器,情况永远不会如此。

关于c++ - 如何在 includes() 算法中使用 greater_equal 谓词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19705283/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com