24#include "AstUtil/Math.hpp"
51 : start_(start), stop_(stop), step_(step), n_(n)
55 : start_(start), stop_(stop), step_(step), n_(
aDiscretizedCount(stop - start, step))
61 using iterator_category = std::input_iterator_tag;
62 using value_type = double;
63 using difference_type = ptrdiff_t;
64 using pointer =
const double*;
65 using reference = double;
69 : range_(range), idx_(idx) {}
74 return (idx_ == range_->n_ - 1)
76 : range_->start_ + range_->step_ * idx_;
79 iterator& operator++() { ++idx_;
return *
this; }
80 iterator operator++(
int) {
auto tmp = *
this; ++*
this;
return tmp; }
82 bool operator==(
const iterator& other)
const {
return idx_ == other.idx_; }
83 bool operator!=(
const iterator& other)
const {
return !(*
this == other); }
86 const DoubleRange* range_ =
nullptr;
90 iterator begin()
const {
return iterator(
this, 0); }
91 iterator end()
const {
return iterator(
this, n_); }
92 size_t size()
const {
return n_; }
99 return (i == n_ - 1) ? stop_ : start_ + step_ * i;
102 double start()
const {
return start_;}
103 double stop()
const {
return stop_;}
104 double step()
const {
return step_;}
reference operator*() const
解引用:除末点按 step 步进,末点返回 stop_
定义 DoubleRange.hpp:72
按步长采样的相对秒范围(惰性可迭代)
定义 DoubleRange.hpp:43
double operator[](size_t i) const
下标访问:返回第 i 个采样值(末点返回 stop_)
定义 DoubleRange.hpp:97
DoubleRange(double start, double stop, double step, size_t n)
构造相对秒采样范围
定义 DoubleRange.hpp:50
A_ALWAYS_INLINE size_t aDiscretizedCount(double span, double step)
计算闭区间 [0, span] 按 step 步长采样(含两端点)的采样点数
定义 Math.hpp:107