Skip to content
C++

Standard Library Reference

76 pages covering the C++ standard library — containers, algorithms, concurrency, memory, and modern utilities up to C++26.

Containers

13 pages

Sequence, associative, unordered, and flat containers. When to use each.

deque, list, queue, stack, priority_queue

"Sequential containers and adaptors: deque for double-ended operations, list for stable iterators, queue/stack/priority_queue adaptors. Choose based on insertion pattern and iterator requirements."

C++98
std::array

Fixed-size contiguous array wrapper with value semantics, bounds checking, and full STL compatibility.

C++11
std::flat_set and std::flat_map (C++23)

Sorted associative container adapters backed by contiguous storage — O(log n) binary search with cache-friendly memory layout, ideal for read-heavy workloads.

C++23
std::forward_list — Singly Linked List

C++ std::forward_list for singly-linked storage with O(1) front insertion, minimal memory per node, forward-only iteration, and when to use it over std::list.

C++11
std::map / std::unordered_map

std::map (sorted red-black tree, O(log n)) and std::unordered_map (hash table, O(1) avg): when to pick each, how to tune performance, and C++17/20/23 additions.

C++98
std::multimap and std::multiset

Ordered associative containers allowing duplicate keys — equal_range, node handles, erase semantics, and flat variants.

C++98
std::set and std::unordered_set

Ordered unique-element container backed by a red-black tree (set) and hash-table unique-element container (unordered_set) in C++.

C++98
std::span — Non-Owning Contiguous View

"C++20 std::span: a zero-overhead view over contiguous data. Fixed vs dynamic extent, subspans, byte reinterpretation, and API design patterns."

C++20
std::stack, std::queue, and std::priority_queue

C++ container adaptors — stack (LIFO), queue (FIFO), and priority_queue (heap-based) with underlying container selection, complexity, and practical patterns.

C++98
std::string

std::string — owning mutable character sequence with SSO, full modification API, searching, numeric conversions, and C++17/20/23 additions.

C++98
std::unordered_map

Hash map with O(1) average insert, lookup, and erase — the default associative container when key ordering is irrelevant.

C++11
std::vector

Dynamic contiguous array container. Default choice for sequential collections. O(1) random access and amortized O(1) append. Reallocates when capacity exhausted.

C++98
unordered_set and unordered_multiset

Hash-based sets with O(1) average lookup—custom hashing, rehashing, iterator invalidation, C++17/20 additions, and performance traps.

C++11

Algorithms

8 pages

Sorting, searching, transforming, set operations, numeric algorithms, parallel policies.

Concurrency

10 pages

Threads, mutexes, atomics, futures, jthread, semaphore, latch, barrier.

Condition Variables

std::condition_variable — atomic wait/notify, spurious wakeup handling, timed waits, condition_variable_any, and C++20 stop_token integration.

C++11
Lock-Free Programming

C++ lock-free programming — compare_exchange, memory orders, Treiber stack, ABA problem, safe reclamation, and when to prefer mutexes.

C++11
Semaphore, Latch, and Barrier (C++20)

C++20 counting_semaphore, binary_semaphore, latch, and barrier — efficient thread synchronization primitives with defined happens-before semantics.

C++20
std::async, future, promise, packaged_task

"C++11 async primitives: std::async for task-based concurrency, future/promise as a one-shot cross-thread value channel, packaged_task for callable wrapping."

C++11
std::atomic

std::atomic<T> provides lock-free atomic operations with configurable memory ordering — covers memory orders, CAS loops, atomic_flag, atomic_ref, wait/notify, and fences.

C++11
std::execution — Senders & Receivers (C++26)

P2300 Senders/Receivers: structured, composable async that decouples work from execution context — portable parallelism across thread pools, GPU queues, and event loops without callbacks.

C++26
std::jthread and Cooperative Cancellation (C++20)

"C++20 std::jthread: auto-joining thread with cooperative cancellation via stop_token, stop_source, and stop_callback."

C++20
std::mutex, lock_guard, unique_lock, scoped_lock, condition_variable

C++ mutual exclusion primitives — mutex variants, RAII lock guards, condition variables, and correct patterns for thread-safe code.

C++11
std::thread, mutex, atomic, condition_variable

C++11 portable threading model — thread creation, mutual exclusion, lock-free atomics, and condition-variable signaling for safe concurrent programs.

C++11
thread_local Storage Duration

C++ thread_local — per-thread variables, initialization semantics, destruction order, async pitfalls, and performance characteristics.

C++11

Memory

8 pages

Smart pointers, allocators, placement new, memory resources (PMR).

Strings

4 pages

std::string, std::string_view, std::format, string algorithms, conversions.

Utilities

33 pages

optional, variant, expected, any, function, chrono, filesystem, span, bitset, and more.

iostreams — Input/Output Streams

"C++ iostream system: standard streams, file and string streams, stream state, manipulators, custom operators, rdbuf redirection, and performance tuning."

C++98
Numeric Algorithms

"C++ numeric algorithms: accumulate, reduce, transform_reduce, prefix scans, inner_product, iota, gcd, lcm, midpoint, and lerp with parallel execution notes."

C++98
Random Number Generation

C++ <random> engines, distributions, seeding strategies, thread safety, and common pitfalls — from mt19937 to discrete_distribution.

C++11
std::any

Type-safe, type-erased container for a single value of any copy-constructible type, with runtime type queries and checked casts.

C++17
std::atomic

Thread-safe atomic operations without mutexes — memory orders, CAS loops, atomic_flag, atomic_ref (C++20), wait/notify (C++20), and lock-free patterns.

C++11
std::bitset

Fixed-size bit manipulation with set/reset/flip/test, bitwise operators, and integer/string conversions — stack-allocated, no heap, no UB from shift overflow.

C++98
std::chrono

Type-safe time and duration library — durations, clocks, time points, and C++20 calendar and timezone types.

C++11
std::chrono — Advanced Usage

Advanced C++ chrono covering C++20 calendar types, time zones, zoned_time, date arithmetic, DST edge cases, formatting, and clock selection.

C++20
std::expected

C++23 vocabulary type holding either a success value T or an error value E, making failure modes explicit in the return type without exceptions.

C++23
std::filesystem

Cross-platform filesystem operations in C++17 — path manipulation, directory traversal, file status queries, and file I/O utilities.

C++17
std::flat_map and std::flat_set (C++23)

C++23 sorted contiguous-memory container adapters with O(log n) binary search and cache-friendly layout — no pointer chasing through tree nodes.

C++23
std::format

Type-safe, compile-time-checked text formatting introduced in C++20, replacing printf and stream-based output with Python-style format strings.

C++20
std::from_chars / std::to_chars

C++17 charconv — locale-independent, non-allocating, non-throwing conversion between numbers and character buffers.

C++17
std::function

A general-purpose polymorphic function wrapper that type-erases any callable matching a given signature, at the cost of runtime overhead.

C++11
std::hash and Custom Hash Functions

std::hash specialization, hash_combine design, transparent heterogeneous lookup (C++20), and custom hash requirements for unordered containers.

C++11
std::inplace_vector (C++26)

Fixed-capacity vector with inline storage — dynamic size 0..N, no heap allocation, constexpr-compatible, and full std::vector-compatible API.

C++26
std::mdspan

Multi-dimensional non-owning view over contiguous data with pluggable layout and accessor policies. C++23 replacement for raw pointer and stride arithmetic.

C++23
std::optional

A value-or-nothing wrapper that eliminates sentinel values and nullable pointer workarounds in C++17.

C++17
std::optional Monadic Operations (C++23)

C++23 and_then, transform, and or_else on std::optional enable composable error-propagation pipelines without nested nullopt checks.

C++23
std::pair and std::tuple

std::pair and std::tuple store multiple values. Structured bindings, std::tie, std::apply, and composition patterns for heterogeneous data.

C++11
std::regex

C++ regular expressions — regex_match, regex_search, regex_replace, capture groups, iterators, and when to reach for a faster library.

C++11
std::scoped_allocator_adaptor

C++11 allocator adaptor that propagates one or more allocators through every nesting level of a container hierarchy via std::uses_allocator.

C++11
std::simd — Portable SIMD (C++26)

std::simd<T, Abi>: type-safe portable SIMD in C++26 (P1928) — write vectorized code once, compile to SSE/AVX/NEON/SVE automatically without intrinsics or platform ifdefs.

C++26
std::source_location (C++20)

Capture file, line, column, and function name at the call site without macros — the C++20 replacement for __FILE__ and __LINE__.

C++20
std::span

Non-owning view over a contiguous sequence of objects. C++20's type-safe replacement for (pointer, length) pairs, working with arrays, vectors, std::array, and raw buffers.

C++20
std::stacktrace (C++23)

Capture and inspect runtime call stacks with std::stacktrace — frame iteration, exception integration, allocator control, and compiler setup.

C++23
std::stop_token / stop_source (C++20)

"C++20 cooperative cancellation primitives: stop_token, stop_source, stop_callback, and jthread integration for safe thread shutdown."

C++20
std::string_view

"Non-owning, read-only string reference (C++17): zero-copy substrings, universal parameter type, constexpr usage, and lifetime hazards."

C++17
std::tuple and std::pair

Fixed-size heterogeneous collections with value semantics — pair for two values, tuple for N values of any types, with structured bindings support.

C++11
std::variant

Type-safe tagged union holding exactly one of a fixed set of alternative types, introduced in C++17 with no heap allocation.

C++17
String Algorithms

C++ string operations — searching, splitting, trimming, case conversion, replace-all, and fast number parsing with from_chars and string_view.

C++98
String Conversions and std::locale

Fast, locale-independent parsing with from_chars/to_chars (C++17), convenient stoi/stod (C++11), and locale-aware formatting via std::locale and its facets.

C++11
Type Traits

"Compile-time type inspection and transformation via <type_traits>: primary categories, property queries, type modifications, and custom trait authoring."

C++11