편의상 BT라 줄이겠음


BT의 노드는 복수의 키를 가지고 있잖아


그러면 이터레이터를 구현할 때 어떻게 해야하지?


예를 들어 BT의 노드를 이렇게 구현한다쳐


template <typename Key_, std::integral auto Order_> struct BTreeNode { using Self_ = BTreeNode; std::size_t size_; Self_* parent_; std::array<Key_, Order_ - 1> keys_; std::array<Self_*, Order_> children_; };


이터레이터는 위에 구현을 토대로 작동할 거잖아


유저가 Search를 사용해서 BT에 키가 존재하는지 찾는다 하면


BT 구현의 함수 Search가 이터레이터를 반환하는데 만약 그걸 dereference하면 뭘 반환하지?


노드 하나에 키가 여러 개 있는데 이걸 저장하는 배열을 반환해야하나?



표준의 map을 보면 (libstdc++ 기준) red black tree의 이터레이터가 노드를 쓰되


dereference 할 때는 pair<Key, Value>를 반환하던데


근데 RB tree는 한 노드에 한 키가 할당돼있으니 가능한 거고 애초에 이렇게 쓰는 게 잘못된 건가?