@@ -129,17 +129,17 @@ RandomForestFilter::RandomForestFilter(FacetFactory facet_factory,
129129, forest_paths_ {std::move (ranger_forests)}
130130, chooser_ {std::move (chooser)}
131131, forest_measure_info_ {}
132+ , first_chooser_measure_index_ {0 }
132133, num_chooser_measures_ {chooser_measures.size ()}
133134, options_ {std::move (options)}
134135, threading_ {threading}
135136, num_records_ {0 }
136137, data_buffer_ {}
137138{
138139 forest_measure_info_.reserve (ranger_forests.size ());
139- std::size_t index {0 };
140140 for (const auto & measures : forest_measures) {
141- forest_measure_info_.push_back ({index , measures.size ()});
142- index += measures.size ();
141+ forest_measure_info_.push_back ({first_chooser_measure_index_ , measures.size ()});
142+ first_chooser_measure_index_ += measures.size ();
143143 }
144144}
145145
@@ -185,7 +185,9 @@ Phred<double> RandomForestFilter::min_soft_call_quality() const noexcept
185185
186186std::int8_t RandomForestFilter::choose_forest (const MeasureVector& measures) const
187187{
188- const MeasureVector chooser_measures (std::prev (std::cend (measures), num_chooser_measures_), std::cend (measures));
188+ const auto first_chooser_measure_itr = std::next (std::cbegin (measures), first_chooser_measure_index_);
189+ const auto last_chooser_measure_itr = std::next (first_chooser_measure_itr, num_chooser_measures_);
190+ const MeasureVector chooser_measures {first_chooser_measure_itr, last_chooser_measure_itr};
189191 return chooser_ (chooser_measures);
190192}
191193
0 commit comments