Sign In Start Free Trial
Account

Add to playlist

Create a Playlist

Modal Close icon
You need to login to use this feature.
  • Book Overview & Buying C++ STL Cookbook
  • Table Of Contents Toc
C++ STL Cookbook

C++ STL Cookbook - Second Edition

By : Bill Weinman
close
close
C++ STL Cookbook

C++ STL Cookbook

By: Bill Weinman

Overview of this book

C++ STL Cookbook is a comprehensive guide that provides practical solutions for mastering the latest features of the C++23 Standard Template Library (STL) through hands-on recipes. Beginning with new features in C++23, this book will help you understand the language's updated mechanics and library features, and offer insights into how they work. Unlike other books, this cookbook takes an implementation-specific, problem-solution approach that will help you overcome hurdles quickly. You'll learn core STL concepts, such as containers, algorithms, utility classes, lambda expressions, iterators, and more, through specific real-world recipes. Building on the success of the first edition, this updated guide includes a new chapter dedicated to the latest features introduced in C++23, such as improved modules, refined ranges, and coroutine-based generators. It also covers essential best practices for writing cleaner and more efficient code, including the use of coroutines, structured bindings, and std::span. Whether you're looking to deepen your understanding of the C++ STL or implement the latest features in your projects, this book provides valuable insights, clear and concise explanations and practical solutions to enhance your C++ programming skills.
Table of Contents (15 chapters)
close
close
14
Index

Simplify your code with the std module

C++20 introduced the concept of modules. Modules represent a more compact and efficient alternative to including headers in your code. The promise of the modules feature is that it will eliminate the need for #include headers in most circumstances. For that promise to be fulfilled, the standard library needs to be available as modules. C++23 provides the std module for that purpose. How to do it.

This recipe demonstrates the usage of the std module.

  • We'll start with a simple Hello, World file:
    #include <print>
    #include <string>
    
    int main() {
        std::string whoami {"I'm Spartacus"};
        std::println("Hello, World, {}", whoami);
    }

    When compiled and run, it produces this output:

    Hello, World, I'm Spartacus
  • When using the std module, you no longer need to use the #include directives. Now, our code can look like this:
    import std;
    
    int main() {
        std::string whoami {"I'm Spartacus"};
        std::println("Hello, World, {}", whoami);
    }

    When compiled and run, this produces the same output:

    Hello, World, I'm Spartacus

How it works

This feature uses the modules specification, introduced with C++20, to provide the entire C++ Standard Library in one pre-compiled module. Because modules are imported at link time, they do not import any code or symbols that are not directly referenced in the target code. This makes modules both safer and more efficient than #include directives. As a side benefit, using modules also eliminates the need for the cumbersome include guards that are necessary in #include files.

The std module is a powerful feature that can mitigate long lists of STL #include directives:

#include <print>
#include <iostream>
#include <stack>
#include <deque>
#include <map>
#include <string>
#include <utility>
#include <cctype>
#include <cmath>
#include <iterator>
#include <limits>

All of that may now be replaced with one import statement:

import std;

There's more…

Many traditional #include headers have legacy C Standard Library symbols declared in the global namespace (e.g., printf or puts). The C++23 standard provides an alternative module named std.compat which provides those global namespace declarations. You may use this anywhere you would use the std module:

import std.compat;

Otherwise, both std and std.compat are the same.

As of late 2025, the C++23 std module specification is not yet implemented on some compilers. In fact, some compilers do not yet implement C++20 modules. Therefore, this book and the accompanying examples will continue to use #include headers. I look forward to having more complete implementations in the future.

CONTINUE READING
83
Tech Concepts
36
Programming languages
73
Tech Tools
Icon Unlimited access to the largest independent learning library in tech of over 8,000 expert-authored tech books and videos.
Icon Innovative learning tools, including AI book assistants, code context explainers, and text-to-speech.
Icon 50+ new titles added per month and exclusive early access to books as they are being written.
C++ STL Cookbook
notes
bookmark Notes and Bookmarks search Search in title playlist Add to playlist font-size Font size

Change the font size

margin-width Margin width

Change margin width

day-mode Day/Sepia/Night Modes

Change background colour

Close icon Search
Country selected

Close icon Your notes and bookmarks

Confirmation

Modal Close icon
claim successful

Buy this book with your credits?

Modal Close icon
Are you sure you want to buy this book with one of your credits?
Close
YES, BUY

Submit Your Feedback

Modal Close icon
Modal Close icon
Modal Close icon