dsplib 1.1.0
C++ DSP library for MATLAB-like coding
Loading...
Searching...
No Matches
iterator.h
1#include <iterator>
2#include <type_traits>
3
4namespace dsplib {
5
6template<typename T>
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
58private:
59 pointer ptr_;
60 int step_{1};
61};
62
63} // namespace dsplib
Definition iterator.h:8