24 #ifndef SOM_SAMPLINGPOLICY_H
25 #define SOM_SAMPLINGPOLICY_H
34 namespace SamplingPolicy {
36 template <
typename IterType>
41 virtual IterType
start(IterType begin, IterType end)
const = 0;
43 virtual IterType
next(IterType iter)
const = 0;
47 template <
typename IterType>
52 IterType
start(IterType begin, IterType)
const override {
56 IterType
next(IterType iter)
const override {
62 template <
typename IterType>
67 IterType
start(IterType begin, IterType end)
const override {
74 auto random_index = dis(gen);
82 IterType
next(IterType)
const override {
92 template <
typename IterType>
97 template <
typename IterType>
106 IterType
start(IterType begin, IterType end)
const override {
116 for (
auto it = begin; it != end; ++it) {
125 int all_max_index = all_iter_list.size() - 1;
126 for (
std::size_t i = 0; i < m_sample_size && all_max_index >= 0; ++i, --all_max_index) {
128 auto it = all_iter_list.begin();
131 all_iter_list.erase(it);
140 IterType
next(IterType)
const override {
158 template <
typename IterType>
Jackknife(std::size_t sample_size)
IterType start(IterType begin, IterType end) const override
std::size_t m_iter_list_size
IterType next(IterType) const override
std::size_t m_sample_size
virtual IterType start(IterType begin, IterType end) const =0
IterType start(IterType begin, IterType end) const override
virtual IterType next(IterType iter) const =0
Jackknife< IterType > jackknifeFactory(IterType, std::size_t sample_size)
Bootstrap< IterType > bootstrapFactory(IterType)
IterType next(IterType iter) const override
std::vector< IterType > m_iter_list
IterType next(IterType) const override
IterType start(IterType begin, IterType) const override