24 #ifndef SOM_SAMPLINGPOLICY_H
25 #define SOM_SAMPLINGPOLICY_H
34 namespace SamplingPolicy {
36 template <
typename IterType>
40 virtual IterType
start(IterType begin, IterType end)
const = 0;
42 virtual IterType
next(IterType iter)
const = 0;
45 template <
typename IterType>
49 IterType
start(IterType begin, IterType)
const override {
53 IterType
next(IterType iter)
const override {
58 template <
typename IterType>
62 IterType
start(IterType begin, IterType end)
const override {
69 auto random_index = dis(gen);
77 IterType
next(IterType)
const override {
85 template <
typename IterType>
90 template <
typename IterType>
98 IterType
start(IterType begin, IterType end)
const override {
108 for (
auto it = begin; it != end; ++it) {
117 int all_max_index = all_iter_list.size() - 1;
118 for (
std::size_t i = 0; i < m_sample_size && all_max_index >= 0; ++i, --all_max_index) {
120 auto it = all_iter_list.begin();
123 all_iter_list.erase(it);
132 IterType
next(IterType)
const override {
148 template <
typename IterType>
IterType start(IterType begin, IterType end) const override
IterType next(IterType) const override
IterType next(IterType iter) const override
IterType start(IterType begin, IterType) const override
virtual IterType start(IterType begin, IterType end) const =0
virtual IterType next(IterType iter) const =0
IterType start(IterType begin, IterType end) const override
IterType next(IterType) const override
std::size_t m_iter_list_size
Jackknife(std::size_t sample_size)
std::size_t m_sample_size
std::vector< IterType > m_iter_list
Jackknife< IterType > jackknifeFactory(IterType, std::size_t sample_size)
Bootstrap< IterType > bootstrapFactory(IterType)