MCPcopy Create free account
hub / github.com/BTCGPU/BTCGPU / prevector

Class prevector

src/prevector.h:39–526  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

37 */
38template<unsigned int N, typename T, typename Size = uint32_t, typename Diff = int32_t>
39class prevector {
40public:
41 typedef Size size_type;
42 typedef Diff difference_type;
43 typedef T value_type;
44 typedef value_type& reference;
45 typedef const value_type& const_reference;
46 typedef value_type* pointer;
47 typedef const value_type* const_pointer;
48
49 class iterator {
50 T* ptr;
51 public:
52 typedef Diff difference_type;
53 typedef T value_type;
54 typedef T* pointer;
55 typedef T& reference;
56 typedef std::random_access_iterator_tag iterator_category;
57 iterator(T* ptr_) : ptr(ptr_) {}
58 T& operator*() const { return *ptr; }
59 T* operator->() const { return ptr; }
60 T& operator[](size_type pos) { return ptr[pos]; }
61 const T& operator[](size_type pos) const { return ptr[pos]; }
62 iterator& operator++() { ptr++; return *this; }
63 iterator& operator--() { ptr--; return *this; }
64 iterator operator++(int) { iterator copy(*this); ++(*this); return copy; }
65 iterator operator--(int) { iterator copy(*this); --(*this); return copy; }
66 difference_type friend operator-(iterator a, iterator b) { return (&(*a) - &(*b)); }
67 iterator operator+(size_type n) { return iterator(ptr + n); }
68 iterator& operator+=(size_type n) { ptr += n; return *this; }
69 iterator operator-(size_type n) { return iterator(ptr - n); }
70 iterator& operator-=(size_type n) { ptr -= n; return *this; }
71 bool operator==(iterator x) const { return ptr == x.ptr; }
72 bool operator!=(iterator x) const { return ptr != x.ptr; }
73 bool operator>=(iterator x) const { return ptr >= x.ptr; }
74 bool operator<=(iterator x) const { return ptr <= x.ptr; }
75 bool operator>(iterator x) const { return ptr > x.ptr; }
76 bool operator<(iterator x) const { return ptr < x.ptr; }
77 };
78
79 class reverse_iterator {
80 T* ptr;
81 public:
82 typedef Diff difference_type;
83 typedef T value_type;
84 typedef T* pointer;
85 typedef T& reference;
86 typedef std::bidirectional_iterator_tag iterator_category;
87 reverse_iterator(T* ptr_) : ptr(ptr_) {}
88 T& operator*() { return *ptr; }
89 const T& operator*() const { return *ptr; }
90 T* operator->() { return ptr; }
91 const T* operator->() const { return ptr; }
92 reverse_iterator& operator--() { ptr++; return *this; }
93 reverse_iterator& operator++() { ptr--; return *this; }
94 reverse_iterator operator++(int) { reverse_iterator copy(*this); ++(*this); return copy; }
95 reverse_iterator operator--(int) { reverse_iterator copy(*this); --(*this); return copy; }
96 bool operator==(reverse_iterator x) const { return ptr == x.ptr; }

Callers

nothing calls this directly

Calls 2

beginMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected