MCPcopy Create free account
hub / github.com/DeepRec-AI/DeepRec / const_iterator

Class const_iterator

tensorflow/core/lib/gtl/flatset.h:103–159  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

101 key_equal key_eq() const { return rep_.key_eq(); }
102
103 class const_iterator {
104 public:
105 typedef typename FlatSet::difference_type difference_type;
106 typedef typename FlatSet::value_type value_type;
107 typedef typename FlatSet::const_pointer pointer;
108 typedef typename FlatSet::const_reference reference;
109 typedef ::std::forward_iterator_tag iterator_category;
110
111 const_iterator() : b_(nullptr), end_(nullptr), i_(0) {}
112
113 // Make iterator pointing at first element at or after b.
114 const_iterator(Bucket* b, Bucket* end) : b_(b), end_(end), i_(0) {
115 SkipUnused();
116 }
117
118 // Make iterator pointing exactly at ith element in b, which must exist.
119 const_iterator(Bucket* b, Bucket* end, uint32 i)
120 : b_(b), end_(end), i_(i) {}
121
122 reference operator*() const { return key(); }
123 pointer operator->() const { return &key(); }
124 bool operator==(const const_iterator& x) const {
125 return b_ == x.b_ && i_ == x.i_;
126 }
127 bool operator!=(const const_iterator& x) const { return !(*this == x); }
128 const_iterator& operator++() {
129 DCHECK(b_ != end_);
130 i_++;
131 SkipUnused();
132 return *this;
133 }
134 const_iterator operator++(int /*indicates postfix*/) {
135 const_iterator tmp(*this);
136 ++*this;
137 return tmp;
138 }
139
140 private:
141 friend class FlatSet;
142 Bucket* b_;
143 Bucket* end_;
144 uint32 i_;
145
146 reference key() const { return b_->key(i_); }
147 void SkipUnused() {
148 while (b_ < end_) {
149 if (i_ >= Rep::kWidth) {
150 i_ = 0;
151 b_++;
152 } else if (b_->marker[i_] < 2) {
153 i_++;
154 } else {
155 break;
156 }
157 }
158 }
159 };
160

Callers 3

beginMethod · 0.70
endMethod · 0.70
findMethod · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected