Rumah >pembangunan bahagian belakang >C++ >Apakah Ciri Bahasa dan Pustaka Utama yang Diperkenalkan dalam C 17?

Apakah Ciri Bahasa dan Pustaka Utama yang Diperkenalkan dalam C 17?

Linda Hamilton
Linda Hamiltonasal
2024-12-13 16:33:13209semak imbas

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

Ciri Baharu dalam C 17

Setelah selesai pembangunan ciri untuk C 17, beberapa ciri bahasa baharu dan penambahan perpustakaan telah diperkenalkan:

Bahasa Ciri:

  • Penggunaan Templat yang Diperbaiki:

    • Potongan hujah templat untuk templat kelas
    • Perwakilan nilai apa-apa jenis dengan templat
  • Penambahbaikan Lambda:

    • Pengenalan constexpr lambda
    • Keupayaan untuk menangkap ini dalam lambdas
  • Atribut:

    • Pengenalan atribut baharu, seperti [[fallthrough]], [[nodiscard] ], dan [[mungkin_tidak digunakan]]
  • Pembersihan Sintaks:

    • Pembolehubah sebaris
    • Sintaks ruang nama ringkas: ruang nama A::B
    • Ungkapan tanpa balingan: throw() dan noexcept(true)
  • Penambahbaikan Aliran Kawalan:

    • Ikatan berstruktur untuk membongkar nilai
    • jika (init; keadaan) dan suis (init; keadaan) untuk aliran dipertingkatkan kawalan
    • Berasaskan julat umum untuk gelung
    • jika constexpr untuk kompilasi bersyarat
  • Ciri-ciri Ketara Lain:

    • Titik apungan heksadesimal literals
    • Peruntukan memori dinamik untuk data terlalu sejajar
    • Penyingkiran salinan terjamin
    • Tertib penilaian tetap untuk ungkapan
    • Pengawalan senarai langsung enum
    • Jaminan kemajuan ke hadapan untuk benang

Tambahan Perpustakaan:

Jenis Data:

  • std ::varian untuk mewakili nilai pelbagai jenis
  • std::pilihan untuk mewakili nilai pilihan
  • std::mana-mana untuk mewakili nilai apa-apa jenis, termasuk jenis tidak boleh disalin
  • std::string_view untuk pengendalian rujukan rentetan yang cekap
  • std: :byte untuk mewakili data tanpa maklumat jenis

Boleh dipanggil Pengendalian:

  • std::invoke for generik callable invocation
  • std::apply for tuple-based callable invocation
  • std::make_from_tuple untuk membina objek daripada tupel
  • Pengenalan is_invocable dan ciri-ciri berkaitan

Perpustakaan Sistem Fail:

  • Pelaksanaan Spesifikasi Teknikal Sistem Fail (TS)

Baharu Algoritma:

  • for_each_n, reduce, transform_reduce, dan banyak lagi

Threading Enhancement:

  • Pengenalan of std::shared_mutex untuk berbilang benang yang lebih cekap akses
  • Jaminan atom dan pengesanan saiz gangguan perkakasan

Tambahan TS Asas Perpustakaan:

  • Algoritma carian (alg.search)
  • Pengalokasi polimorfik (pmr)

Penambahbaikan Bekas:

  • try_emplace dan insert_or_assign untuk bekas yang cekap sisipan
  • Penyambungan untuk peta, set dan bekas tidak tersusun
  • Akses data() bukan const untuk rentetan

Penunjuk Pintar:

  • Membetulkan dan mengubah suai unique_ptr
  • Pengenalan weak_from_this untuk mengurus petunjuk kongsi

Pelbagai:

  • Penggunaan C11 sebaliknya daripada C99 untuk perpustakaan standard
  • Terpelihara std[0-9] ruang nama untuk perpustakaan standard masa hadapan
  • Pelbagai fungsi utiliti (musnahkan, tidak dimulakan_***)
  • Pendedahan fungsi matematik khas
  • Pengenalan std:: pengapit, std::gcd, dan std::lcm
  • Peningkatan pengendalian pengecualian, termasuk std::uncaught_exceptions
  • std::as_const, std::bool_constant dan pelbagai utiliti templat
  • std::chrono yang dipertingkatkan perpustakaan
  • Pengenalan pengendali Boolean (std::conjunction, std::disjunction, std::negation)
  • Peraturan untuk penggunaan noexcept dalam std

Ciri Ditamatkan:

  • Mengalih keluar beberapa perpustakaan C, , result_of, dan lain-lain

Atas ialah kandungan terperinci Apakah Ciri Bahasa dan Pustaka Utama yang Diperkenalkan dalam C 17?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn