Die Kenntnis der Syntax umfasst höchstens 5% des notwendigen Wissens.— Yechiel Kimchi
Hier werden die Aufgaben
der vom Standard geforderten Bibliotheken beschrieben.
Darüber hinaus liefern die Hersteller von Compilern weitere
betriebssystemabhängige, nicht portable Bibliotheken aus.
Die Standard-Bibliothek umfasst die in C++
(C++98,
¹C++11,
+C++14,
*C++17,
°C++20,
³C++23) definierten Header
(einige wurden geächtet oder entfernt)
<algorithm>
<any>*
<array>¹
<atomic>¹
barrier°
<bit>°
<bitset>
<charconv>*
<chrono>¹
<codecvt>
<compare>°
<complex>
<concepts>°
<condition_variable>¹
coroutine°
<deque>
<exception>
<execution>+
<expected>³
<filesystem>*
<format>°
<forward_list>¹
<fstream>
<functional>
<future>¹
<generator>³
<initializer_list>¹
<iomanip>
<ios>
<iosfwd>
<iostream>
<istream>
<iterator>
latch°
<limits>
<list>
<locale>
<map>
<memory>
<memory_resource>+
<mutex>¹
<new>
<numbers>°
<numeric>
<optional>*
<ostream>
<print>³
<queue>
<random>¹
<ranges>°
<ratio>¹
<regex>¹
<scoped_allocator>¹
semaphore°
<set>
<shared_mutex>+
<source_location>°
<span>°
<sstream>
<stack>
<stacktrace>³
<stdexcept>
stop_token°
<streambuf>
<string>
<string_view>*
<strstream>
<syncstream>°
<system_error>¹
<thread>¹
<tuple>¹
<typeindex>¹
<typeinfo>
<type_traits>¹
<unordered_map>¹
<unordered_set>¹
<utility>
<valarray>
<variant>*
<vector>
<version>°
sowie die aus der C-Bibliothek übernommenen Header der Form <cXYZ>
<cassert>
<ccomplex>
<cctype>
<cerrno>
<cfenv>
<cfloat>
<cinttypes>
<ciso646>
<climits>
<clocale>
<cmath>
<csetjmp>
<csignal>
<cstdalign>
<cstdarg>
<cstdbool>
<cstddef>
<cstdint>
<cstdio>
<cstdlib>
<cstring>
<ctgmath>
<ctime>
<cuchar>
<cwchar>
<cwctype>
welche es auch in der Form <XYZ.h>
gibt.
Diese packen alle Bezeichner in den globalen
Namensraum
statt in den Namensraum std
.
Der Standard empfiehlt für neue Programme die neuere Form ohne .h
mit Ausnahme solcher Programme, die streng C-kompatibel sein sollen.
Modulares C++23 fasst die Header mit import std;
(und import std.compat;
für C-Bibliotheken im globalen Namensraum) zusammen. Dort sind #include
-Befehle nur im globalen Modulfragment erlaubt.