Namespaces
Variants

Utility library

From cppreference.net
Utilities library

C++ enthält eine Vielzahl von Utility-Bibliotheken, die Funktionalität bereitstellen, die von Bit-Zählung bis zu partieller Funktionsanwendung reicht. Diese Bibliotheken können grob in zwei Gruppen unterteilt werden:

  • Sprachunterstützungsbibliotheken, und
  • Allzweckbibliotheken.

Inhaltsverzeichnis

Sprachunterstützung

Sprachunterstützungsbibliotheken stellen Klassen und Funktionen bereit, die eng mit Sprachfunktionen interagieren und gängige Sprachidiome unterstützen.

Implementierungseigenschaften (seit C++20)

Der Header <version> liefert implementierungsabhängige Informationen über die C++-Standardbibliothek (wie Versionsnummer und Releasedatum). Er definiert außerdem die Bibliothek-Feature-Test-Makros .

Typsupport

Grundlegende Typen (z.B. std::size_t , std::nullptr_t ), RTTI (z.B. std::type_info )

Programm-Dienstprogramme

Beendigung (z.B. std::abort , std::atexit ), Umgebung (z.B. std::system ), Signale (z.B. std::raise ).

Dynamische Speicherverwaltung

Smart Pointer (z.B. std::shared_ptr ), Allokatoren (z.B. std::allocator oder std::pmr::memory_resource ), C-Style-Speicherverwaltung (z.B. std::malloc ).

Fehlerbehandlung

Ausnahmen (z.B. std::exception , std::terminate ), Assertions (z.B. assert ).

Variadische Funktionen

Unterstützung für Funktionen, die eine beliebige Anzahl von Parametern akzeptieren (z.B. über va_start , va_arg , va_end ).

Initializer-Listen (seit C++11)

Definiert im Header <initializer_list>
referenziert ein temporäres Array, das bei Listeninitialisierung erstellt wird
(Klassentemplate)

Erfassung von Quellcode-Informationen (seit C++20)

Definiert im Header <source_location>
eine Klasse, die Informationen über den Quellcode repräsentiert, wie Dateinamen, Zeilennummern und Funktionsnamen
(Klasse)

Drei-Wege-Vergleich (seit C++20)

Definiert im Header <compare>
spezifiziert, dass der Operator <=> ein konsistentes Ergebnis für gegebene Typen liefert
(Konzept)
der Ergebnistyp des 3-Wege-Vergleichs, der alle 6 Operatoren unterstützt, nicht substituierbar ist und unvergleichbare Werte erlaubt
(Klasse)
der Ergebnistyp des 3-Wege-Vergleichs, der alle 6 Operatoren unterstützt und nicht substituierbar ist
(Klasse)
der Ergebnistyp des 3-Wege-Vergleichs, der alle 6 Operatoren unterstützt und substituierbar ist
(Klasse)
benannte Vergleichsfunktionen
(Funktion)
eingeschränktes Funktionsobjekt, das x <=> y implementiert
(Klasse)
ermittelt den Ergebnistyp des Drei-Wege-Vergleichsoperators <=> für gegebene Typen
(Klassentemplate)
die stärkste Vergleichskategorie, in die alle gegebenen Typen konvertiert werden können
(Klassentemplate)
führt einen 3-Wege-Vergleich durch und erzeugt ein Ergebnis vom Typ std::strong_ordering
(Anpassungspunktobjekt)
(C++20)
führt einen 3-Wege-Vergleich durch und erzeugt ein Ergebnis vom Typ std::weak_ordering
(Anpassungspunktobjekt)
führt einen 3-Wege-Vergleich durch und erzeugt ein Ergebnis vom Typ std::partial_ordering
(Anpassungspunktobjekt)
führt einen 3-Wege-Vergleich durch und erzeugt ein Ergebnis vom Typ std::strong_ordering , selbst wenn operator <=> nicht verfügbar ist
(Anpassungspunktobjekt)
führt einen 3-Wege-Vergleich durch und erzeugt ein Ergebnis vom Typ std::weak_ordering , selbst wenn operator <=> nicht verfügbar ist
(Anpassungspunktobjekt)
führt einen 3-Wege-Vergleich durch und erzeugt ein Ergebnis vom Typ std::partial_ordering , selbst wenn operator <=> nicht verfügbar ist
(Anpassungspunktobjekt)

Coroutinen-Unterstützung (seit C++20)

Typen für Coroutine -Unterstützung (z.B. std::coroutine_traits , std::coroutine_handle ).

Vertragsunterstützung (seit C++26)

Typen für Contract -Unterstützung (z.B. std::contracts::contract_violation ).

Allgemeine Hilfsprogramme

Tauschen

Definiert im Header <utility>
tauscht die Werte zweier Objekte
(Funktionstemplate)
(C++14)
ersetzt das Argument durch einen neuen Wert und gibt seinen vorherigen Wert zurück
(Funktionstemplate)
Definiert im Header <concepts>
tauscht die Werte zweier Objekte
(Customization Point Object)

Typoperationen (since C++11)

Definiert im Header <utility>
(C++11)
leitet ein Funktionsargument weiter und verwendet den Typ-Template-Parameter, um seine Wertkategorie zu erhalten
(Funktionstemplate)
leitet ein Funktionsargument weiter, als ob es in die Wertkategorie und Konstanz des Ausdrucks des angegebenen Typ-Template-Parameters umgewandelt würde
(Funktionstemplate)
(C++11)
wandelt das Argument in einen xvalue um
(Funktionstemplate)
wandelt das Argument in einen xvalue um, wenn der Move-Konstruktor keine Ausnahme wirft
(Funktionstemplate)
(C++17)
erhält eine Referenz auf const zu seinem Argument
(Funktionstemplate)
(C++11)
erhält eine Referenz auf ein Objekt des Template-Typarguments zur Verwendung in einem nicht ausgewerteten Kontext
(Funktionstemplate)
konvertiert eine Enumeration in ihren zugrundeliegenden Typ
(Funktionstemplate)

Integer-Vergleichsfunktionen (seit C++20)

Definiert im Header <utility>
vergleicht zwei ganzzahlige Werte und stellt sicher, dass signierte negative Zahlen kleiner als unsignierte Zahlen sind
(Funktionstemplate)
(C++20)
prüft, ob ein ganzzahliger Wert im Wertebereich eines gegebenen ganzzahligen Typs liegt
(Funktionstemplate)

Relationale Operatoren (bis C++20)

Definiert im Header <utility>
Definiert im Namespace std::rel_ops
generiert automatisch Vergleichsoperatoren basierend auf benutzerdefiniertem operator == und operator <
(Funktionstemplate)

Konstruktions-Tags (seit C++11)

Definiert im Header <utility>
Stückweise Konstruktionsmarkierung
(Markierung)
In-place-Konstruktionsmarkierung
(Markierung)
Wert-Konstruktionsmarkierung
(Markierung)

Paare und Tupel

Definiert im Header <utility>
implementiert binäres Tupel, d.h. ein Wertepaar
(Klassen-Template)
Definiert im Header <tuple>
(C++11)
implementiert Container fester Größe, der Elemente möglicherweise unterschiedlicher Typen enthält
(Klassen-Template)
(C++17)
ruft eine Funktion mit einem Tupel von Argumenten auf
(Funktions-Template)
konstruiert ein Objekt mit einem Tupel von Argumenten
(Funktions-Template)
Tupel-Protokoll (seit C++11)
Definiert im Header <tuple>
Definiert im Header <utility>
Definiert im Header <array>
Definiert im Header <ranges>
Definiert im Header <complex>
(C++11)
ermittelt die Anzahl der Elemente eines tupelartigen Typs
(Klassen-Template)
ermittelt die Elementtypen eines tupelartigen Typs
(Klassen-Template)

Summentypen und typlöschte Wrapper (seit C++17)

Definiert im Header <optional>
(C++17)
Ein Wrapper, der möglicherweise ein Objekt enthält oder nicht
(Klassentemplate)
Definiert im Header <expected>
(C++23)
Ein Wrapper, der entweder einen erwarteten oder einen Fehlerwert enthält
(Klassentemplate)
Definiert im Header <variant>
(C++17)
Eine typsichere, diskriminierte Union
(Klassentemplate)
Definiert im Header <any>
(C++17)
Objekte, die Instanzen eines beliebigen CopyConstructible Typs enthalten
(Klasse)

Bitset

Definiert im Header <bitset>
implementiert Bit-Arrays fester Länge
(Klassentemplate)

Bitmanipulation (seit C++20)

Der Header <bit> bietet mehrere Funktionsvorlagen zum Zugriff, zur Manipulation und Verarbeitung einzelner Bits und Bitsequenzen. Die Byte-Reihenfolge ( Endianness ) von skalaren Typen kann über die std:: endian Einrichtung inspiziert werden.

Funktionsobjekte (seit C++11)

Partielle Funktionsanwendung (z.B. std::bind ) und verwandte Utilities: Hilfsmittel für Bindungen wie std::ref und std::placeholders , polymorphe Funktionswrapper: std::function , vordefinierte Funktoren (z.B. std::plus , std::equal_to ), Pointer-to-Member zu Funktionskonvertern std::mem_fn .

Hash-Unterstützung (seit C++11)

Definiert im Header <functional>
(C++11)
Hash-Funktionsobjekt
(Klassentemplate)

Siehe auch

C-Dokumentation für Utility-Bibliothek