21 std::vector<SNode> _st;
24 using iterator_category = std::bidirectional_iterator_tag;
25 using difference_type = std::ptrdiff_t;
29 this->idx = UINT64_MAX;
43 BASE_ITE::initialize_stack(this->_st, *_root);
48 this->idx = UINT64_MAX;
58 uint64_t get_current_leaf_container_index()
const
60 assert(this->_st.size() != 0);
61 SNode top = this->_st[this->_st.size() - 1];
62 return top.pointer.get_leaf_container_index();
67 return this->idx == UINT64_MAX;
72 for (
auto &it : this->_st)
74 item._st.push_back(it.copy());
85 uint64_t operator*()
const
87 return this->get_current_leaf_container_index();
94 bool b = BASE_ITE::proceed(this->_st);
96 SNode top = this->_st[this->_st.size() - 1];
97 if(top.pointer.is_leaf()){
102 this->idx = UINT64_MAX;