🛰️航天仿真算法库 SpaceAST
0.0.1
载入中...
搜索中...
未找到
TimePointRange.hpp
浏览该文件的文档.
1
20
21
#pragma once
22
23
#include "AstGlobal.h"
24
#include "
TimePoint.hpp
"
25
#include <iterator>
// for std::input_iterator_tag
26
#include <cstddef>
// for size_t / ptrdiff_t
27
28
AST_NAMESPACE_BEGIN
29
30
40
class
TimePointRange
41
{
42
public
:
48
TimePointRange
(
TimePoint
start,
TimePoint
stop,
double
step,
size_t
n)
49
: start_(start), stop_(stop), step_(step), n_(n) {}
50
51
class
iterator
52
{
53
public
:
54
using
iterator_category = std::input_iterator_tag;
55
using
value_type
=
TimePoint
;
56
using
difference_type = ptrdiff_t;
57
using
pointer
=
const
TimePoint
*;
58
using
reference
=
TimePoint
;
// input iterator:按值返回
59
60
iterator
() =
default
;
61
iterator
(
const
TimePointRange
* range,
size_t
idx)
62
: range_(range), idx_(idx) {}
63
65
reference
operator*
()
const
66
{
67
return
(idx_ == range_->n_ - 1)
68
? range_->stop_
69
: range_->start_ + range_->step_ * idx_;
70
}
71
72
iterator
& operator++() { ++idx_;
return
*
this
; }
73
iterator operator++(
int
) {
auto
tmp = *
this
; ++*
this
;
return
tmp; }
74
75
bool
operator==(
const
iterator& other)
const
{
return
idx_ == other.idx_; }
76
bool
operator!=(
const
iterator& other)
const
{
return
!(*
this
== other); }
77
78
private
:
79
const
TimePointRange* range_ =
nullptr
;
80
size_t
idx_ = 0;
81
};
82
83
iterator begin()
const
{
return
iterator(
this
, 0); }
84
iterator end()
const
{
return
iterator(
this
, n_); }
85
size_t
size()
const
{
return
n_; }
86
87
private
:
88
TimePoint start_;
89
TimePoint stop_;
90
double
step_;
91
size_t
n_;
92
};
93
94
98
AST_NAMESPACE_END
TimePoint.hpp
绝对时间点
ast::TimePointRange::iterator
定义
TimePointRange.hpp:52
ast::TimePointRange::iterator::operator*
reference operator*() const
解引用:除末点按 step 步进,末点返回 stop_
定义
TimePointRange.hpp:65
ast::TimePointRange
按步长采样的时间点范围(惰性可迭代)
定义
TimePointRange.hpp:41
ast::TimePointRange::TimePointRange
TimePointRange(TimePoint start, TimePoint stop, double step, size_t n)
构造时间点采样范围
定义
TimePointRange.hpp:48
ast::TimePoint
绝对时间点
定义
TimePoint.hpp:108
src
AstCore
Time
TimePointRange.hpp
制作者
1.12.0