dsplib
1.1.0
C++ DSP library for MATLAB-like coding
Loading...
Searching...
No Matches
include
dsplib
iterator.h
1
#include <iterator>
2
#include <type_traits>
3
4
namespace
dsplib {
5
6
template
<
typename
T>
7
struct
SliceIterator
8
{
9
using
iterator_category = std::forward_iterator_tag;
10
using
difference_type = std::ptrdiff_t;
11
using
pointer = T*;
12
using
reference = T&;
13
using
value_type = std::remove_cv_t<T>;
14
15
SliceIterator
(pointer ptr,
int
step = 1)
16
: ptr_{ptr}
17
, step_{step} {
18
}
19
20
reference operator*()
const
noexcept
{
21
return
*ptr_;
22
}
23
24
pointer operator->()
noexcept
{
25
return
ptr_;
26
}
27
28
SliceIterator
& operator++()
noexcept
{
29
ptr_ += step_;
30
return
*
this
;
31
}
32
33
SliceIterator
operator++(
int
)
noexcept
{
34
SliceIterator
tmp = *
this
;
35
++(*this);
36
return
tmp;
37
}
38
39
SliceIterator
& operator--()
noexcept
{
40
ptr_ -= step_;
41
return
*
this
;
42
}
43
44
SliceIterator
operator--(
int
)
noexcept
{
45
SliceIterator
tmp = *
this
;
46
--(*this);
47
return
tmp;
48
}
49
50
friend
bool
operator==(
const
SliceIterator
& lhs,
const
SliceIterator
& rhs)
noexcept
{
51
return
lhs.ptr_ == rhs.ptr_;
52
};
53
54
friend
bool
operator!=(
const
SliceIterator
& lhs,
const
SliceIterator
& rhs)
noexcept
{
55
return
lhs.ptr_ != rhs.ptr_;
56
};
57
58
private
:
59
pointer ptr_;
60
int
step_{1};
61
};
62
63
}
// namespace dsplib
dsplib::SliceIterator
Definition
iterator.h:8
Generated by
1.9.8