Как реализован операторы operator++ для бинарного дерева, лежащего в основе std::set, std::map ... и в других ассоциативных контейнерах STL? Интересует алгоритм, согласно которому принимается решение: по имеющемося указателю перейти к следующему указателю. (Т.е. что считать следующим указателем?).
std::set<int> s;
s.insert(3);
s.insert(2);
s.insert(5);
std::set<int>::iterator i = s.begin();
std::cout << *i << ' ';
++i;
s.insert(1);
std::cout << *i << ' ';