Thinking in C++, Volume 1, 2nd Edition