Функция is_partitioned
Функция is_partitioned проверяет, разбита ли последовательность
на две группы по заданному условию. Она возвращает true,
если все элементы, удовлетворяющие предикату, идут перед элементами,
которые ему не удовлетворяют. В первый параметр мы передаем итератор
начала последовательности, во второй - итератор конца, а в третий -
предикат (функцию или лямбду), который задает условие разбиения.
Синтаксис
is_partitioned(first, last, pred)
Пример
Давайте проверим, разбит ли вектор {1, 2, 3, 4, 5}
на четные и нечетные числа, где все четные идут в начале:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> v = {1, 2, 3, 4, 5};
bool res = is_partitioned(v.begin(), v.end(), [](int x) {
return x % 2 == 0;
});
cout << res << endl;
return 0;
}
Результат выполнения кода:
0
Пример
Давайте проверим вектор, который действительно разбит на четные и нечетные числа:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> v = {2, 4, 1, 3, 5};
bool res = is_partitioned(v.begin(), v.end(), [](int x) {
return x % 2 == 0;
});
cout << res << endl;
return 0;
}
Результат выполнения кода:
1
Смотрите также
-
функция
partition,
которая разбивает последовательность на две группы -
функция
stable_partition,
которая устойчиво разбивает последовательность -
функция
is_sorted,
которая проверяет, отсортирована ли последовательность -
функция
all_of,
которая проверяет, все ли элементы удовлетворяют условию