27 using Tit =
typename std::vector<T>::iterator;
28 using BinaryPredicate = std::function<bool(
const T&,
const T&)>;
38 Tit moving_partition(
const Tit begin, Tit moving_divider,
const Tit end)
const
42 for (Tit a = begin; a != moving_divider; a++)
45 moving_divider = std::partition(moving_divider, end, [&](
const T& b) {
return f(*a, b); });
47 return moving_divider;
64 std::vector<std::vector<T>>
Clusterize(std::vector<T>& from)
const
66 std::vector<std::vector<T>> out;
73 Tit divider = from.begin();
74 const Tit end = from.end();
79 while (divider != end)
83 divider = moving_partition(begin, divider, end);
85 std::move(std::vector<T>(std::make_move_iterator(begin), std::make_move_iterator(divider))));