xix
Introd uction
The C++ Standard Library
The C++ Standard Library is a collection of essential classes and functions used by
millions of C++ programmers on a daily basis. Being part of the ISO Standard of the
C++ Programming Language, an implementation is distributed with virtually every
C++ compiler. Code written with the C++ Standard Library is therefore portable across
compilers and target platforms.
The Library is more than 20 years old. Its initial versions were heavily inspired by
a (then proprietary) C++ library called the Standard Template Library (STL) , so much
so that many still incorrectly refer to the Standard Library as “the STL.” The STL library
pioneered generic programming with templated data structures called containers and
algorithms , glued together with the concept of iterators . Most of this work was adapted by
the C++ standardization committee, but nevertheless neither library is a true superset of
the other.
The C++ Standard Library today is much more than the STL containers and
algorithms. For decades, it has featured STL-like string classes, extensive localization
facilities, and a stream-based I/O library, as well as all headers of the C Standard Library.
In recent years, the C++11 and C++14 editions of the ISO standard have added, among
other things, hash map containers, generic smart pointers, a versatile random-number-
generation framework, a powerful regular expression library, more expressive utilities
for function-style programming, type traits for template metaprogramming, and a
portable concurrency library featuring threads, mutexes, condition variables, and atomic
variables. Many of these libraries are based on Boost, a collection of open-source C++
libraries.
And this is just the beginning: the C++ community has rarely been as active and alive
as in the past few years. The next version of the Standard, tentatively called C++17, is
expected to add even more essential classes and functions.
Why This Book?
Needless to say, it is hard to know and remember all the possibilities, details, and
intricacies of the vast and growing C++ Standard Library. This handy reference guide
offers a condensed, well-structured summary of all essential aspects of the C++ Standard
Library and is therefore indispensable to any C++ programmer.
You could consult the Standard itself, but it is written in a very detailed, technical
style and is primarily targeted at Library implementors. Moreover, it is very long: the C++
Standard Library chapters alone are over 750 pages in length, and those on the