Как использовать предикат great_equal с включенным алгоритмом ()?

Я пытался использовать greater_equal predicate с includes() algorithm, Я написал следующий код:

#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, но это не так. Я немного запутался по поводу его использования. Пожалуйста помоги.

0

Решение

Как и все алгоритмы для отсортированных последовательностей, для этого требуется, чтобы компаратор был таким же, как тот, который использовался для сортировки последовательности; а также greater_equal не действует для этого, поскольку не дает строгого порядка.

includes не проверяет, является ли компаратор истинным для каждой пары входов; он проверяет, являются ли два значения эквивалентными в соответствии с порядком, определенным компаратором. То есть он проверяет, что !comp(a,b) && !comp(b,a), Это никогда не будет правдой для такого строгого компаратора, как greater_equal,

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]