1 #ifndef STAN__COMMON__RECORDER__FILTERED_VALUES_HPP
2 #define STAN__COMMON__RECORDER__FILTERED_VALUES_HPP
14 template <
class InternalVector>
17 size_t N_, M_, N_filter_;
18 std::vector<size_t> filter_;
20 std::vector<double> tmp;
26 const std::vector<size_t>& filter)
27 : N_(N), M_(M), N_filter_(filter.
size()), filter_(filter),
28 values_(N_filter_, M_), tmp(N_filter_) {
29 for (
size_t n = 0; n < N_filter_; n++)
30 if (filter.at(n) >= N_)
31 throw std::out_of_range(
"filter is looking for elements out of range");
35 const std::vector<InternalVector>&
x,
36 const std::vector<size_t>& filter)
37 : N_(N), M_(0), filter_(filter), N_filter_(filter.
size()),
38 values_(x), tmp(N_filter_) {
39 if (x.size() != filter.size())
40 throw std::length_error(
"filter provided does not match dimensions of the storage");
43 for (
size_t n = 0; n < N_filter_; n++)
44 if (filter.at(n) >= N_)
45 throw std::out_of_range(
"filter is looking for elements out of range");
55 throw std::length_error(
"vector provided does not match the parameter length");
56 for (
size_t n = 0; n < N_filter_; n++)
57 tmp[n] = x[filter_[n]];
70 return values_.is_recording();
73 const std::vector<InternalVector>&
x() {
const std::vector< InternalVector > & x()
bool is_recording() const
filtered_values(const size_t N, const std::vector< InternalVector > &x, const std::vector< size_t > &filter)
void operator()(const std::vector< std::string > &x)
int size(const std::vector< T > &x)
void operator()(const std::string x)
void operator()(const std::vector< T > &x)
filtered_values(const size_t N, const size_t M, const std::vector< size_t > &filter)