0Pricing
C++ Academy · Pelajaran

Concepts Standar: Integral dan Rentang

Gunakan concepts pustaka standar seperti integral dan ranges::range

Concepts Standar: Integral dan Rentang adalah pelajaran C++ Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C++ Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C++ Academy mencakup 4 pelajaran total.

Pustaka Konsep Standar

C++20 memperkenalkan banyak konsep standar dalam <concepts> dan <ranges>. Dengan mengenalnya, Anda tidak perlu menulis konsep sendiri.

Konsep Bahasa Inti

Konsep-konsep dasar:

  • std::same_as<T, U>
  • std::derived_from<T, U>
  • std::convertible_to<T, U>
  • std::common_with<T, U>
  • std::assignable_from<T, U>

Konsep Aritmetika

Batasi pada tipe numerik:

  • std::integral — tipe bilangan bulat apa pun
  • std::signed_integral — bilangan bulat bertanda
  • std::unsigned_integral — bilangan bulat tak bertanda
  • std::floating_point — float, double, long double
template <std::floating_point T>
T mean(T a, T b) { return (a + b) / 2; }

Konsep Perbandingan

Beri batasan pada tipe untuk kesetaraan dan pengurutan:

  • std::equality_comparable
  • std::totally_ordered
  • std::three_way_comparable

Konsep Objek

Persyaratan umum:

  • std::movable
  • std::copyable
  • std::default_initializable
  • std::semiregular
  • std::regular
template <std::regular T>
class Container { /* full-fledged value type */ };

Konsep yang Dapat Dipanggil

Untuk fungsi dan functor:

  • std::invocable<F, Args...>
  • std::regular_invocable<F, Args...>
  • std::predicate<F, Args...>
template <std::invocable<int> F>
void apply_to_42(F&& f) {
    std::forward<F>(f)(42);
}

Konsep Iterator

Di dalam <iterator>:

  • std::input_iterator
  • std::forward_iterator
  • std::bidirectional_iterator
  • std::random_access_iterator
  • std::contiguous_iterator

Konsep Rentang (C++20)

Dari <ranges>:

  • std::ranges::range — memiliki begin/end
  • std::ranges::view — rentang yang tidak memiliki data
  • std::ranges::sized_range — mengetahui ukurannya dalam O(1)
  • std::ranges::random_access_range
template <std::ranges::range R>
auto first(R&& r) {
    return *std::ranges::begin(r);
}

Menggabungkan Konsep

Campurkan konsep untuk menyatakan persyaratan yang tepat.

template <std::ranges::random_access_range R>
    requires std::integral<std::ranges::range_value_t<R>>
auto sum(const R& r) {
    return std::reduce(std::ranges::begin(r), std::ranges::end(r));
}

Konsep Kustom Berbasis Konsep Standar

Bangun konsep khusus domain di atas konsep standar.

template <typename T>
concept Number = std::integral<T> || std::floating_point<T>;

Algoritme Berbasis Konsep

Algoritme rentang C++20 memiliki batasan konsep yang ekstensif. Pesan kesalahannya langsung menyebutkan konsep mana yang gagal ketika Anda memberikan tipe yang tidak sesuai.

Ringkasan Cepat

Gunakan konsep bawaan kapan pun memungkinkan:

  • Bilangan → integral / floating_point
  • Iterasi → ranges::range
  • Dapat dipanggil → invocable / predicate
  • Tipe nilai → regular atau semiregular

Pemeriksaan Singkat

Konsep standar mana yang menjelaskan tipe yang memiliki begin() dan end()?

Ringkasan

Pustaka standar menyediakan pustaka konsep yang kaya: aritmetika (integral, floating_point), dapat dibandingkan (equality_comparable), objek (movable, regular), dapat dipanggil, iterator, dan rentang. Gunakan konsep-konsep tersebut sebagai dasar untuk batasan Anda sendiri.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Concepts Standar: Integral dan Rentang” gratis?

Ya — teks lengkap “Concepts Standar: Integral dan Rentang” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C++ Academy, upgrade ke CoddyKit PRO. Kursus C++ Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Concepts Standar: Integral dan Rentang”?

Gunakan concepts pustaka standar seperti integral dan ranges::range Kamu berlatih C++ Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai C++ Academy?

Tidak diperlukan pengalaman sebelumnya. C++ Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Concepts Standar: Integral dan Rentang” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran C++ Academy ini?

Ya. Setiap pelajaran C++ Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Mengapa Concepts vs SFINAE
  2. Mendefinisikan Concepts dengan requires
  3. Menggunakan Concepts dalam Template dan auto
  4. Concepts Standar: Integral dan Rentang
← Kembali ke C++ Academy