23 LeafForwardIterator _lf_iterator;
27 bool container_iterator_end_flag =
true;
31 using iterator_category = std::bidirectional_iterator_tag;
32 using difference_type = std::ptrdiff_t;
43 _root->copy_to(this->_lf_iterator);
45 if (this->_lf_iterator.is_end())
47 this->container_iterator_end_flag =
true;
53 this->container_iterator_end_flag =
false;
54 this->container_iterator =
container.begin();
72 return this->_lf_iterator.is_end() && this->container_iterator_end_flag;
77 if (this->_lf_iterator.idx !=
other._lf_iterator.idx)
79 if (this->_lf_iterator.idx <
other._lf_iterator.idx)
90 if (this->container_iterator !=
other.container_iterator)
92 if (this->container_iterator <
other.container_iterator)
103 bool b1 = this->container_iterator_end_flag;
104 bool b2 =
other.container_iterator_end_flag;
137 throw std::invalid_argument(
"Error: BitForwardIterator::operator++()");
141 if (this->_lf_iterator.is_end() && !
this->container_iterator_end_flag)
143 this->container_iterator_end_flag =
true;
151 if (!this->container_iterator_end_flag)
174 if (this->container_iterator.is_end())
176 this->container_iterator_end_flag =
true;
179 else if (!this->_lf_iterator.is_end())
182 ++this->_lf_iterator;
184 this->container_iterator_end_flag =
false;
185 if (!this->_lf_iterator.is_end())
189 this->container_iterator =
container.begin();
200 throw std::invalid_argument(
"Error: BitForwardIterator::operator++()");