148 typedef typename Range::iterator range_iterator;
159 if (
m_size <= CuttingAccuracy){
163 boost::array<const_iterator,CuttingAccuracy> samples;
164 for(std::size_t i = 0; i != CuttingAccuracy; i++)
165 samples[i] = points[
m_size * (2*i+1) / (2*CuttingAccuracy)];
170 std::vector<double> distance(
m_size);
171 for(std::size_t i = 0; i !=
m_size; ++i){
172 distance[i] =
funct(*points[i]);
177 range_iterator split = this->
splitList(distance,points);
178 range_iterator begin = boost::begin(points);
179 range_iterator end = boost::end(points);
187 std::size_t leftSize = split-begin;
192 boost::iterator_range<range_iterator>
left(begin,split);
193 boost::iterator_range<range_iterator>
right(split,end);