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

Apakah Ciri dan Penambahbaikan Baharu Utama yang Diperkenalkan dalam C 17?

Barbara Streisand
Lepaskan: 2024-12-11 17:17:11
asal
663 orang telah melayarinya

What are the Key New Features and Enhancements Introduced in C  17?

Apakah ciri baharu dalam C 17?

C 17 memperkenalkan pelbagai ciri baharu dan penambahbaikan kepada bahasa, termasuk:

  • Bahasa Ciri:

    • Potongan hujah templat untuk templat kelas
    • templat untuk mewakili nilai mana-mana jenis hujah templat bukan jenis
    • Pembetulan kepada hujah templat bukan jenis
    • Sokongan untuk templat templat
    • Lipatan lanjutan dan ... ungkapan
    • auto x{8} sebagai integer
    • Memodenkan penggunaan dengan ... dan senarai
    • Constexpr lambdas
    • Merakam ini dalam lambda
    • Atribut seperti [[fallthrough]], [[nodiscard]], [[mungkin_tidak digunakan]]
    • Atribut pada ruang nama dan pembanci
    • Menggunakan dalam atribut untuk mengelakkan pengulangan ruang nama atribut
    • Memerlukan penyusun mengabaikan atribut bukan standard yang mereka tidak kenali
    • Pembolehubah sebaris
    • Alias ​​ruang nama (cth., ruang nama A::B)
    • Tegas_statik(ungkapan) mudah; tanpa rentetan
    • Menghapuskan tiada lontaran dan menggantikannya dengan throw() dan noexcept(true)
  • Kawalan berbilang pulangan dan aliran yang lebih bersih:

    • Ikatan berstruktur untuk memudahkan berbilang pulangan values
    • if (init; condition) dan suis (init; condition) untuk penyataan if extended dan switch
    • Generalizing based ranges for loops for sentinel and custom iterator
    • if constexpr untuk hampir generik kod
  • Pelbagai:

    • Literal titik apungan heksadesimal
    • Peruntukan memori dinamik untuk penjajaran lebih data
    • Salinan terjamin penyingkiran
    • Tertib penilaian tetap untuk ungkapan
    • Pemulaan senarai langsung enum
    • Jaminan kemajuan ke hadapan (FPG)
    • Huruf aksara u8'U ', u8'T', u8'F', u8'8'
    • tiada kecuali dalam sistem jenis
    • __has_include untuk menguji ralat pemasukan fail pengepala
    • Turutan pembetulan penukaran penunjuk
    • Pembetulan kepada pembina yang diwarisi dan permulaan agregat dengan warisan
    • Fungsi utiliti untuk punning jenis std
  • Tambahan Perpustakaan:

    • Data jenis:

      • std::varian untuk jenis kesatuan berteg
      • std::pilihan untuk nilai nullable
      • std::mana-mana untuk sebarang jenis nilai
      • std::string_view sebagai rujukan kepada tatasusunan aksara atau subrentetan
      • std::bait sebagai bukan integer mahupun aksara, tetapi hanya data
    • Panggil bahan:

      • std::invoke untuk panggilan fungsi generik
      • std::mohon untuk membongkar tupel ke dalam panggilan fungsi
      • std::make_from_tuple dan std::mohon untuk pembinaan objek
      • is_invocable, is_invocable_r dan invoke_result untuk fungsi pemanggilan fungsi
    • Sistem Fail TS v1: Operasi sistem fail yang dipertingkatkan
    • Algoritma baharu: for_each_n, kurangkan, transform_reduce, exclusive_scan, inclusive_scan, transform_exclusive_scan, dan transform_inclusive_scan
    • Threading: std::shared_mutex, atomic::is_always_lockfree, and scoped_lock
    • Versi selari algoritma dan jentera berkaitan
  • Asas Perpustakaan TS v1:
  • Algoritma carian, pengalokasi polimorfik (pmr), pensampelan
  • Penambahbaikan Bekas:
  • try_emplace dan insert_or_assign penyambungan untuk peta dan set, bukan const .data() untuk rentetan, bukan ahli std::size, std::kosong, std::data, sokongan jenis tidak lengkap minimum dalam bekas, "konsep" lelaran bersebelahan, lelaran constexpr, pembina dikemas kini untuk keluarga fungsi emplace
  • Perubahan penunjuk pintar:
  • Pembetulan kepada unique_ptr dan tweak kepada weak_from_this and shared from this
  • Penambahbaikan jenis data std lain:
  • Pembinaan std::tuple dengan pendakap kerinting, reference_wrapper boleh disalin secara remeh
  • Lain-lain:

    C 17 perpustakaan adalah berdasarkan C11 dan bukannya C99
    • std terpelihara[0-9] untuk perpustakaan standard masa hadapan
    • Fungsi utiliti seperti musnah, uninitialized_move, uninitialized_value_construct dan uninitialized_default_construct
  • std::clamp()
  • Pengiraan GCD dan LCM
  • std::uncaught_exceptions untuk melontar dalam pemusnah
  • std::as_const and std: :bool_constant jenis
  • std::void_t dan std::void_t jenis
  • std::owner_less untuk penunjuk pintar mengisih berdasarkan kandungan
  • Penambahbaikan kepada std::chrono
  • std::conjunction, std::disjunction, std::negation
  • std::not_fn
  • Peraturan untuk tidak kecuali dalam std
  • std::is_contiguous_layout
  • Penukaran nombor prestasi tinggi dengan std::to_chars dan std::from_chars
Ciri-ciri:
  • tukar, adalah_agregat, mempunyai_perwakilan_objek_unik>

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

    sumber:php.cn
    Kenyataan Laman Web ini
    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
    Artikel terbaru oleh pengarang
    Tutorial Popular
    Lagi>
    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan