Let’s have a quick overview of another book related to Modern C++ and The Standard Library. This time I picked Rainer Grimm’s book the author of the modernescpp blog.

Read more if you’d like to win C++ book bundle! :)

The book

The C++ Standard Library

What every professional C++ programmer should know about the C++ standard library

The book is available at LeanPub: here’s the link.

And you can find Rainer’s blog at: modernescpp.com

This book comes from the German version (amazon.de link), it was translated into English and then updated with the information about C++14. Later, in the second version of the book, we have descriptions of C++17 features.

In the newest edition you can expect all info about significant STL C++17 changes like string_view , parallel algorithms, std::filesystem , std::any , std::optional and more.

The book is a concise overview of the features, with lots of examples. And as I know from the author it was not an easy task to fit all vital information in around 200 pages.

One note, this book comes as an ebook, but there’s a Korean translation that appeared as a printed version.

Let’s see what’s inside.

The Structure

1. The Standard Library

History and an overview of the Library. Where we are in the standardization process.

2. Utilities

Everything you need to start with STL: pairs and tuples, chrono, smart pointers, type traits and C++17 utils: any, optional and variant.

3. Interface of All Containers

Common functionalities of sequential and associative containers: creation, deletion, size and access.

4. Sequential Container

Basics about arrays, vectors, deques, lists and forward lists.

5. Associative Containers

Information about ordered associative containers (like std::map or std::set) and then unordered (hash maps in the form of std::unordered_map or std::unordered_set).

6. Adaptors for Containers

Stacks Queues and Priority Queues.

7. Iterators

Iterator intro, categories, how to use them.

8. Callable Units

Function objects, functions and lambdas.

9. Algorithms

A quick overview of all useful algorithms: from for_each to sorting, min max, permutations and hashing.

10. Numeric

Random numbers mostly.

11. Strings

How to create and use strings in C++: concatenation, element access, comparisons, searching numeric conversions.

12. String Views

A short chapter about new, non-owning string object - that was introduced in C++17. When they can help and how to use them with the relation to regular strings.

13. Regular Expressions

Regular expressions in the STL were introduced with C++11. This chapter contains a short overview.

14. Input and Output Streams

How to use streams

15. Filesystem library

Basic introduction to the filesystem from C++17

16. Multithreading

Jump start into multithreading (core parts introduced in C++11): memory model, atomics, threads, shared variables, condition variables and tasks.

Summary

Final mark: 4+/5

Pros:

A concise overview of the Standard Library

A lot of examples

Great way to learn STL including C++17

Various tips and suggestions spread out through the book

Cons:

sometimes code samples might be explained in more details

doesn’t look as polished as larger books from standard publishers.

only ebook English version

Rainer Grimm’s book is a great way to learn basics of STL, including major changes of C++17. The book is easy to read. It can serve as a quick reference or as an overview of the Standard Library. It might be handy if you just finished some intro book about the language and you look for another step.

I’m also a big fan of self-publishing and Rainer is a great example that you can succeed in such approach.

Also if you look for more about multithreading Rainer has another book solely on that topic. Check it out here: Concurrency with Modern… by Rainer Grimm.

So… if you’re interested in the book… I have good news:

Giveaway

The giveaway has ended. Thanks for all your entries and comments!

Together with the author - Rainer Grimm - we’d like to offer you 5 (five!) bundles of the books.

Yet, you can still answer one or two of those questions: