26 #ifndef MLN_ACCU_STAT_RANK_HIGH_QUANT_HH
27 # define MLN_ACCU_STAT_RANK_HIGH_QUANT_HH
34 # include <mln/accu/internal/base.hh>
35 # include <mln/core/concept/meta_accumulator.hh>
36 # include <mln/trait/value_.hh>
37 # include <mln/util/pix.hh>
57 struct rank_high_quant :
public mln::accu::internal::base< const T&, rank_high_quant<T> >
66 void take_as_init_(
const argument& t);
67 void take(
const argument& t);
106 template <
typename T>
121 template <
typename T>
132 # ifndef MLN_INCLUDE_ONLY
134 template <
typename T>
136 rank_high_quant<T>::rank_high_quant(
unsigned k,
unsigned n)
141 mln_assertion(k_ < n_);
145 template <
typename T>
153 template <
typename T>
161 template <
typename T>
163 void rank_high_quant<T>::take(
const argument& t)
169 template <
typename T>
172 rank_high_quant<T>::take(
const rank_high_quant<T>& other)
174 elts_.insert(elts_.end(),
180 template <
typename T>
187 if (n_ == elts_.size())
191 return elts_[(elts_.size() * k_) / n_];
194 template <
typename T>
202 template <
typename T>
210 std::sort(elts_.begin(), elts_.end());
214 # endif // ! MLN_INCLUDE_ONLY
224 #endif // ! MLN_ACCU_STAT_RANK_HIGH_QUANT_HH