Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
Search
C++17 standard library quick reference : a pocket guide to data structures, algorithms, and functions (2nd ed.)
Van Weert P., Gregoire M., Apress, New York, NY, 2019. 320 pp. Type: Book (978-1-484249-22-2)
Date Reviewed: Feb 1 2021

This book is not intended for those wishing to learn C++. It assumes readers are familiar with C++ syntax and semantics. Readers that satisfy this knowledge requirement will find the book accessible and well organized. Readers proficient in other languages who are transitioning to C++ are also likely to find this book useful. The authors deliver a “quick reference” to the C++17 standard library’s essential data structures, algorithms, and functions. Supplementary material is also available online (https://github.com/Apress/cpp17-standard-library-quick-ref).

Given that the C++ standard library is large and not every programmer uses every aspect of the library on a daily basis, the book is intended to serve as a handy reference guide that is indispensable to any C++ programmer. As a quick, highly condensed reference guide, it is ideal for programmers wishing to be reminded of what the C++ library offers and how best to exploit that in the projects they are working on. The authors adopt a direct, no-nonsense approach to describing the library features; hence, the book is not well suited for novice programmers. This approach leads to a concise description of the standard library features, but it sacrifices lengthy, complete examples with accompanying discussions in order to do so. This is where the supporting material found on GitHub becomes beneficial; readers can experiment with working code in order to more fully explore the C++ standard library features. This is not to say that the book is devoid of examples. To the contrary, there are a number of helpful code fragments throughout the book that help to clarify the discussion in each chapter.

The book is divided into eight chapters and an appendix. The chapters are well organized and presented in a logical order so that no chapter is dependent on later chapters. The appendix covers the standard library headers associated with each of the previous eight chapters, and serves as an ultra-fast reminder for readers who want help recalling a header file or a class without a longer (albeit condensed) discussion.

Chapter 1 addresses numerics and mathematics. Common mathematical functions--exponential and logarithmic functions, and trigonometric and hyperbolic functions--are addressed initially. Special mathematical functions such as Bessel functions, integrals, and gamma functions are addressed before the chapter moves on to complex numbers, random numbers, and numeric arrays.

Chapter 2 focuses on general utilities such as pairs and tuples, bytes, relational operators, pointers, function objects, vocabulary types, data and time utilities, and type utilities such as runtime type identification.

Chapter 3, “Containers,” covers iterators, sequential containers (vectors, deques, arrays, lists), and container adaptors (queues and stacks), followed by order associative containers (maps and sets) and unordered associative containers (hash maps and hash functions).

Chapter 4, “Algorithms,” covers the standard C++ algorithms for finding elements, subsequence search, sequence comparison, partitioning, sorting, permutations, heaps, and more. Chapter 5, “Input/Output,” provides an in-depth look at streams and file systems, in addition to addressing C-style file utilities and input/output. Chapter 6 covers strings, characters, localization, regular expressions, and numeric conversions

Chapter 7 is devoted to concurrency. All of the key elements are addressed, including threads, futures, mutual exclusion, conditional variables, synchronization, and atomic operations. Since the book is not intended to be a textbook explaining these topics and associated concepts, readers must have some idea of how to utilize concurrency before reading this chapter.

Finally, chapter 8 examines diagnostics. Assertions, exceptions, system errors, and failure handling are discussed.

While the book is a great reminder of the content and value of the C++17 standard library, it is not a particularly easy book for learning about the library--unless the reader is a very experienced programmer and already familiar with the concepts covered. Since the book intends to serve as a concise reference guide, it does not address performance issues, the benefits (or otherwise) of using the standard library, or what the impact on efficiency may be when one elects to use the standard library.

More reviews about this item: Amazon

Reviewer:  Michael Oudshoorn Review #: CR147174 (2105-0102)
Bookmark and Share
  Featured Reviewer  
 
Object Oriented Functional Data Language (H.2.3 ... )
 
 
Programming Languages (D.3 )
 
Would you recommend this review?
yes
no
Other reviews under "Object Oriented Functional Data Language": Date
The Object-Oriented Functional Data Language
Mannino M., Choi I., Batory D. IEEE Transactions on Software Engineering 16(11): 1258-1272, 1990. Type: Article
May 1 1991
Foundations of F#
Pickering R., Apress, Berkeley, CA, 2007.  360, Type: Book (9781590597576)
Nov 16 2007

E-Mail This Printer-Friendly
Send Your Comments
Contact Us
Reproduction in whole or in part without permission is prohibited.   Copyright 1999-2024 ThinkLoud®
Terms of Use
| Privacy Policy