C++ is capable of tackling a whole range of programming tasks. The purpose of this book is to give breadth and depth to C++ programmers' existing experience of the language by representing a large number of algorithms, most of them implemented as ready-to-run (and standalone) programs. The programs are as readable as possible without sacrificing too great a degree of efficiency, generality, portability and robustness. Both the classes and programs are designed to demonstrate major programming principles. There is coverage of two key language features - templates and exception handling - apart from which the reader is assumed to have working knowledge of C++. Besides traditional subjects, such as quicksort and binary trees, this book also covers some less well-known topics, including multi-precision arithmetic, route planning and external sorting. Demonstration programs for these and many other exciting applications are based on C++ classes which you can also use in programs of your own.