Here is an explanation of the structure of the book:
This book consists of four parts and a collection of appendices:Part I "The basics" presents the fundamental concepts and techniques of programming together with the C++ language and library facilities needed to get started writing code. This includes the type system, arithmetic operations, control structures, error handling, and the design, implementation, and use of functions and user-defined types.Part II "Input and output" describes how to get numeric and text data from the keyboard and from files, and how to produce corresponding output to the screen and to files. Then, it shows how to present numeric data, text, and geometric shapes as graphical output, and how to get input into a program from a graphical user interface (GUI).Part III "Data and algorithms" focuses on the C++ standard library's containers and algorithms framework (the STL). It shows how containers (such as vector, list, and map) are implemented (using pointers, arrays, dynamic memory, exceptions and templates) and used. It also demonstrates the use of standard library algorithms (such as sort, find, and inner_product).Part IV "Broadening the view" offers a perspective on programming through a discussion of ideals and history, through examples (such as matrix computation, text manipulation, testing, and embedded systems programming), and through a brief description of the C language.Appendices provide useful information that doesn't fit into a tutorial presentation, such as surveys of C++ language and standard library facilities, and descriptions of how to get started with an integrated development environment (IDE) and a graphical user interface (GUI) library.
The order of topics is determined by programming techniques, rather than programming language features.
I characterize my approach as "depth-first." It is also "concrete-first" and "concept-based." Part I resembles a traditional course except that it moves very fast and use higher-level types, such as string and vector right from the start, rather than being constrained by the built-in types. By the end of Part I, the students can use and write simple classes. Part II is where object-oriented programming (uses of inheritance) comes into the picture and Part III is heavily influenced by generic programming. Part III is also where pointers and free store enter the picture.