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>
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>
148 rank_high_quant<T>::init()
153 template <
typename T>
155 void rank_high_quant<T>::take_as_init_(
const argument& 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>
183 rank_high_quant<T>::to_result()
const
185 const_cast<rank_high_quant<T>&
>(*this).sort();
187 if (n_ == elts_.size())
191 return elts_[(elts_.size() * k_) / n_];
194 template <
typename T>
197 rank_high_quant<T>::is_valid()
const
202 template <
typename T>
205 rank_high_quant<T>::sort()
210 std::sort(elts_.begin(), elts_.end());
214 # endif // ! MLN_INCLUDE_ONLY
224 #endif // ! MLN_ACCU_STAT_RANK_HIGH_QUANT_HH