Generic Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .890
Why Iterators? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .890
Kinds of Iterators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .894
Iterator Hierarchy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .897
Concepts, Refinements, and Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . .898
Kinds of Containers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .905
Associative Containers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .915
Function Objects (aka Functors) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .922
Functor Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .923
Predefined Functors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .926
Adaptable Functors and Function Adapters . . . . . . . . . . . . . . . . . . . . . . .928
Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .930
Algorithm Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .931
General Properties of Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .932
The STL and the string Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .933
Functions Versus Container Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . .934
Using the STL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .936
Other Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .940
vector and valarray . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .940
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .946
Review Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .948
Programming Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .949
CHAPTER 17: Input, Output, and Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .951
An Overview of C++ Input and Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . .952
Streams and Buffers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .952
Streams, Buffers, and the iostream File . . . . . . . . . . . . . . . . . . . . . . . . . .955
Redirection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .957
Output with cout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .958
The Overloaded << Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .958
The Other ostream Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .961
Flushing the Output Buffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .964
Formatting with cout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .965
Input with cin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .983
How cin >> Views Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .985
Stream States . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .987
Other istream Class Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .991
Other istream Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .999
File Input and Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1003
Simple File I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1004
Stream Checking and is_open() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1007
Opening Multiple Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1008
xvCONTENTS
00 0672326973 fm 12/30/04 9:26 AM Page xv