C++ 如何在includes()算法中使用更大的_相等谓词?

C++ 如何在includes()算法中使用更大的_相等谓词?,c++,predicate,c++-standard-library,C++,Predicate,C++ Standard Library,我试图将更大的_相等谓词与includes()算法一起使用。我编写了以下代码: #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

我试图将
更大的_相等谓词
includes()算法
一起使用。我编写了以下代码:

#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;
}
#包括
#包括
#包括
int main()
{
INTA[]={1,2,3,4,5,6,7,8,10,9,10};
intb[]={4,3,5,1,2,6,8,9,7,10,11};
无符号整数alen=sizeof(a)/sizeof(int),blen=sizeof(b)/sizeof(int);
标准::排序(a,a+alen);
标准::排序(b,b+blen);
如果(标准::包括(a,a+alen,b,b+blen,标准::大于等于()

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


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

与排序序列上的所有算法一样,这要求比较器与用于排序序列的比较器相同;
大于等于
对于这一点无效,因为它没有给出严格的排序


includes
不检查比较器对于每对输入是否为真;它根据比较器定义的顺序检查两个值是否相等。也就是说,它检查
!comp(a,b)&&!comp(b,a)
。对于非严格比较器(如
更大的_equal

而言,这种情况永远不会发生。数组未排序(相对于比较器)。数组未排序(相对于比较器)。如果我使用
less谓词
,那么这个输出
a是否应该包含b
,因为数组将按此顺序排序?@mozart:No,因为
a
不包含
b
(尽管由于
b
没有排序,它可以做任何事情)。那么谓词在这里有什么用呢?你能提供更多信息的链接吗?我也对
b
进行了排序。不是吗?@mozart:比较器定义了一个排序,指定了序列的排序方式。如果第一个参数严格地排在第二个参数之前,那么它必须是一个严格的弱排序,返回
true
,并且
>false
如果它在它之后或与它相等。
较大的
较小的
都可以;
较大的
不相等,因为它为相等的值返回
true
,这并不严格。设置的操作(包括
包括
)要求根据该比较器对两个序列进行排序。@莫扎特:
b
未排序:第一个元素是
4,3,5
。如果我使用
less谓词,数组将按此顺序排序,那么该输出
a是否包含b
。(虽然,由于
b
没有排序,它可以做任何事情)。那么谓词在这里有什么用呢?你能提供更多信息的链接吗?我也对
b
进行了排序。不是吗?@mozart:比较器定义了一个排序,指定了序列的排序方式。如果第一个参数严格地排在第二个参数之前,那么它必须是一个严格的弱排序,返回
true
,并且
>false
如果它在它之后或与它相等。
较大的
较小的
都可以;
较大的
不相等,因为它为相等的值返回
true
,这并不严格。设置的操作(包括
包括
)要求根据该比较器对两个序列进行排序。@莫扎特:
b
未排序:第一个元素是
4,3,5