Heim >Backend-Entwicklung >C++ >Was sind die wichtigsten Sprach- und Bibliotheksfunktionen, die in C 17 eingeführt wurden?

Was sind die wichtigsten Sprach- und Bibliotheksfunktionen, die in C 17 eingeführt wurden?

Linda Hamilton
Linda HamiltonOriginal
2024-12-13 16:33:13209Durchsuche

What are the Key Language and Library Features Introduced in C  17?

Neue Funktionen in C 17

Nach Abschluss der Funktionsentwicklung für C 17 wurden mehrere neue Sprachfunktionen und Bibliothekserweiterungen eingeführt:

Sprache Funktionen:

  • Verbesserte Vorlagenverwendung:

    • Abzug von Vorlagenargumenten für Klassenvorlagen
    • Darstellung von Werte jeglicher Art mit Vorlage
  • Lambda-Verbesserungen:

    • Einführung von constexpr-Lambdas
    • Fähigkeit zur Erfassung das hier Lambdas
  • Attribute:

    • Einführung neuer Attribute, wie z. B. [[fallthrough]], [[nodiscard] ], Und [[maybe_unused]]
  • Syntaxbereinigung:

    • Inline-Variablen
    • Vereinfachte Namespace-Syntax: Namespace A::B
    • No-throw-Ausdrücke: throw() und noexclusive(true)
  • Verbesserungen des Kontrollflusses:

    • Strukturierte Bindungen zum Entpacken von Werten
    • if (init; Bedingung) und Schalter (init; Bedingung) für eine verbesserte Flusskontrolle
    • Verallgemeinert Bereichsbasierte for-Schleifen
    • if constexpr für bedingte Kompilierung
  • Weitere bemerkenswerte Funktionen:

    • Hexadezimale Gleitkomma-Literale
    • Dynamische Speicherzuweisung für Überausrichtung Daten
    • Garantierte Kopierelision
    • Feste Auswertungsreihenfolge für Ausdrücke
    • Direkte Listeninitialisierung von Aufzählungen
    • Vorwärtsfortschrittsgarantien für Threads

Bibliotheksergänzungen:

Datentypen:

  • std ::variant zur Darstellung von Werten verschiedener Typen
  • std::optional zur Darstellung von optional Werte
  • std::any zur Darstellung von Werten beliebiger Art, einschließlich nicht kopierbarer Typen
  • std::string_view zur effizienten Handhabung von String-Referenzen
  • std::byte für Darstellung von Daten ohne Typinformationen

Aufrufbar Handhabung:

  • std::invoke für generischen aufrufbaren Aufruf
  • std::apply für tupelbasierten aufrufbaren Aufruf
  • std::make_from_tuple für die Konstruktion Objekte aus Tupeln
  • Einführung von is_invocable und verwandten Merkmale

Dateisystembibliothek:

  • Implementierung der Dateisystem-Technischen Spezifikation (TS)

Neue Algorithmen:

  • for_each_n, reduzieren, transform_reduce und mehr

Threading-Verbesserungen:

  • Einführung von std::shared_mutex für effizienteren Multithread-Zugriff
  • Atomgarantien und Hardware-Interferenzgröße Erkennung

Bibliotheksgrundlagen TS-Ergänzungen:

  • Suchalgorithmen (alg.search)
  • Polymorpher Allokator (pmr)

Container-Verbesserungen:

  • try_emplace und insert_or_assign für einen effizienten Container Einfügen
  • Spleißen für Karten, Mengen und ungeordnete Container
  • Nicht-konstanter data()-Zugriff für Strings

Intelligente Zeiger:

  • Korrekturen und Optimierungen an unique_ptr
  • Einführung von schwach_from_this zur Verwaltung gemeinsamer Zeiger

Sonstiges:

  • Stattdessen Verwendung von C11 von C99 für die Standardbibliothek
  • Reserviert std[0-9]-Namespaces für zukünftige Standardbibliotheken
  • Verschiedene Hilfsfunktionen (destroy, uninitialized_***)
  • Veröffentlichung spezieller mathematischer Funktionen
  • Einführung von std:: clamp, std::gcd und std::lcm
  • Verbesserungen bei der Ausnahmebehandlung, einschließlich std::uncaught_Exceptions
  • std::as_const, std::bool_constant und verschiedene Vorlagendienstprogramme
  • Verbesserte std::chrono-Bibliothek
  • Einführung boolescher Operatoren (std:: Konjunktion, std::Disjunktion, std::negation)
  • Regeln für die Verwendung von „noexclusive“ innerhalb von std

Veraltete Funktionen:

  • Entfernung einiger C-Bibliotheken, , result_of und andere

Das obige ist der detaillierte Inhalt vonWas sind die wichtigsten Sprach- und Bibliotheksfunktionen, die in C 17 eingeführt wurden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn