0Pricing
C++ Academy · Pelajaran

Operator Perbandingan Tiga Arah C++20

Gunakan operator spaceship untuk perbandingan yang ringkas dan konsisten

Operator Perbandingan Tiga Arah C++20 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.

Operator Pesawat Ruang Angkasa <=>

C++20 memperkenalkan operator perbandingan tiga arah <=>. Satu operator memberikan semua informasi yang diperlukan compiler untuk membuat keenam operator relasional.

Tipe Pengembalian: Tiga Kategori

Tipe pengembalian bergantung pada kekuatan pengurutan:

  • std::strong_ordering — nilai setara yang dapat dibedakan
  • std::weak_ordering — setara tetapi dapat dibedakan (misalnya, tanpa membedakan huruf besar-kecil)
  • std::partial_ordering — beberapa nilai tidak dapat dibandingkan (misalnya, NaN)

Perbandingan Default

Pola yang paling umum: minta compiler membuat <=> dengan membandingkan anggota secara leksikografis.

struct Point {
    int x;
    int y;
    auto operator<=>(const Point& other) const = default;
};

Point a{1, 2}, b{1, 3};
bool less = (a < b);     // true — auto-generated

Keenam Operator Secara Otomatis

Menetapkan default untuk <=> juga menetapkan default untuk ==. Bersama-sama, keduanya menghasilkan !=, <, <=, >, >=—keenamnya dalam satu baris.

Implementasi <=> Kustom

Tulislah isi fungsi secara manual untuk logika perbandingan khusus.

std::strong_ordering operator<=>(const Person& other) const {
    if (auto c = name <=> other.name; c != 0) return c;
    return age <=> other.age;
}

Menggunakan Hasil

Hasil dari <=> dapat dibandingkan dengan literal 0 untuk pemeriksaan boolean yang sebenarnya Anda inginkan.

if ((a <=> b) < 0)  std::cout << "a less\n";
if ((a <=> b) == 0) std::cout << "equal\n";
if ((a <=> b) > 0)  std::cout << "a greater\n";

Bilangan Titik Mengambang dan partial_ordering

Untuk bilangan titik mengambang, gunakan std::partial_ordering untuk menangani NaN—perbandingan dengan NaN menghasilkan unordered.

struct Measurement {
    double value;
    std::partial_ordering operator<=>(const Measurement&) const = default;
};

Contoh Pengurutan Lemah

Gunakan pengurutan lemah ketika nilai mungkin dapat dibedakan tetapi tetap dibandingkan sebagai sama—misalnya, string yang tidak membedakan huruf besar-kecil.

== Kustom Secara Terpisah

Anda dapat menetapkan default untuk <=> dan menulis == kustom—terkadang kesetaraan memiliki aturan yang berbeda dari pengurutan.

Memigrasikan Kode Lama

Jika kelas Anda sebelumnya memiliki banyak operator perbandingan, gantilah dengan <=> default saat bermigrasi ke C++20. Kodenya jauh lebih sedikit, dengan semantik yang sama.

Kapan Tidak Menggunakan <=>

Untuk tipe yang hanya memerlukan kesetaraan (tanpa pengurutan), sediakan hanya operator== dan operator!= (yang dibuat otomatis dalam C++20).

Catatan Performa

Compiler dapat mengoptimalkan <=> default seefisien perbandingan yang ditulis secara manual. Tidak ada overhead waktu eksekusi karena menggunakan operator pesawat ruang angkasa.

Pemeriksaan Singkat

Kategori pengembalian mana yang harus digunakan untuk tipe titik mengambang yang mungkin berisi NaN?

Ringkasan

Operator C++20 <=> menghasilkan keenam operator relasional dari satu definisi. Tetapkan default untuk membandingkan anggota secara leksikografis. Pilih pengurutan kuat, lemah, atau parsial berdasarkan semantik tipe Anda.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Operator Perbandingan Tiga Arah C++20” gratis?

Ya — teks lengkap “Operator Perbandingan Tiga Arah C++20” 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 “Operator Perbandingan Tiga Arah C++20”?

Gunakan operator spaceship untuk perbandingan yang ringkas dan konsisten 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 “Operator Perbandingan Tiga Arah C++20” 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. Operator Aritmetika dan Perbandingan
  2. Operator Penyisipan dan Ekstraksi Aliran
  3. Operator Subskrip dan Pemanggilan Fungsi
  4. Operator Perbandingan Tiga Arah C++20
← Kembali ke C++ Academy