change iterator structure to actually do an in order iterate

This commit is contained in:
Pagwin 2024-11-19 13:01:22 -05:00
parent a12ee91033
commit 8a73e0d950
No known key found for this signature in database
GPG key ID: 81137023740CA260

24
Map.hpp
View file

@ -1,6 +1,8 @@
// commenting everything out when I commit so all commits my code technically // commenting everything out when I commit so all commits my code technically
// compiles // compiles
#include <algorithm> #include <algorithm>
#include <cstddef>
#include <deque>
#include <initializer_list> #include <initializer_list>
#include <iterator> #include <iterator>
#include <optional> #include <optional>
@ -24,16 +26,28 @@ public:
// TODO: Iterator functionality // TODO: Iterator functionality
class Iterator { class Iterator {
public: public:
using underlying = typename std::vector<std::optional<ValueType>>::iterator;
private: private:
underlying store_iter; // in order traversal, deque used as the stack we traverse up after each
// right hand side traversal completes
//
// if a right child exists traverse down to the left most child of that
// child pushing to stack elements that are passed if it doesn't pop from
// the stack
//
std::vector<ValueType> &parent;
std::deque<std::size_t> forward_traversal;
std::deque<std::size_t> backward_traversal;
std::size_t current;
public: public:
Iterator() = delete; Iterator() = delete;
Iterator(underlying iter) : store_iter{iter} {} Iterator(std::vector<ValueType> &parent, std::size_t current)
: parent{parent}, forward_traversal{}, backward_traversal{},
current{current} {}
ConstIterator to_const() const { return ConstIterator(this); } ConstIterator to_const() const { return ConstIterator(this); }
Iterator &operator++() { return *this; } Iterator &operator++() {
// TODO: implement this
}
Iterator operator++(int) { Iterator operator++(int) {
Iterator tmp = *this; Iterator tmp = *this;
++(*this); ++(*this);