Learning algorithms and data structures in C++