14#ifndef NEULANDCLUSTERINGENGINEH
15#define NEULANDCLUSTERINGENGINEH
27 using Tit =
typename std::vector<T>::iterator;
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)
85 std::move(std::vector<T>(std::make_move_iterator(begin), std::make_move_iterator(divider))));
void SetClusteringCondition(const BinaryPredicate &_f)
bool SatisfiesClusteringCondition(const T &a, const T &b) const
std::vector< std::vector< T > > Clusterize(std::vector< T > &from) const
std::function< bool(const T &, const T &)> BinaryPredicate
typename std::vector< T >::iterator Tit
Tit moving_partition(const Tit begin, Tit moving_divider, const Tit end) const
ClusteringEngine()=default
ClusteringEngine(const BinaryPredicate &_f)
Simulation of NeuLAND Bar/Paddle.