Rumah >pembangunan bahagian belakang >C++ >Bagaimana Melaksanakan Pesanan Lemah yang Tegas `

Bagaimana Melaksanakan Pesanan Lemah yang Tegas `

Linda Hamilton
Linda Hamiltonasal
2024-12-24 01:47:12893semak imbas

How to Implement a Strict Weak Ordering `

Cara Mentakrifkan Operator< on an-Tuple for Strict Weak Ordering

Pengenalan

Strict weak ordering ialah konsep matematik yang mentakrifkan hubungan antara dua objek. Ia menyatakan bahawa jika objek x dan y adalah setara, maka kedua-dua f(x, y) dan f(y, x) adalah palsu; dan jika a kurang daripada b, maka f(a, b) adalah benar dan f(b, a) adalah palsu.

Definisi untuk n-Tuples

Untuk n-tuple, operator< boleh ditakrifkan untuk memenuhi pesanan lemah yang ketat dengan mengikut syarat berikut:

  • Kesetaraan: Dua n-tuple adalah setara jika ia sama dalam semua komponennya.
  • Kurang Daripada: N-tuple a adalah kurang daripada n-tuple b yang lain jika mana-mana komponen a adalah kurang daripada komponen b yang sepadan.

Pelaksanaan

Takrifan di atas boleh dilaksanakan dalam C menggunakan langkah berikut:

  1. Buat fungsi perbandingan yang mengembalikan palsu untuk kesetaraan dan benar untuk kurang daripada, mengikut syarat di atas.
  2. Sediakan operator lebih muatan untuk < operator menggunakan fungsi perbandingan.

Contoh

Untuk 3-tuple, operator< boleh ditakrifkan seperti berikut:

struct Triple {
    int x;
    int y;
    int z;
    bool operator<(const Triple& other) const {
        return (x < other.x) || (y < other.y) || (z < other.z);
    }
};

Menggunakan takrifan ini, dua rangkap tiga akan menjadi setara jika ia mempunyai nilai yang sama untuk x, y dan z. Tiga kali ganda akan dianggap kurang daripada yang lain jika mana-mana komponennya kurang daripada tiga kali ganda yang lain.

std::tuple

Sebagai alternatif, std:: kelas tuple yang disediakan oleh Perpustakaan Standard C sudah melaksanakan pesanan lemah yang ketat untuk tupel. Untuk memanfaatkan ini, tupel boleh digunakan tanpa menyalin objek yang terkandung di dalamnya.

struct S {
    int a;
    int b;
};
bool operator<(const S& lhs, const S& rhs) {
    return std::tie(lhs.a, lhs.b) < std::tie(rhs.a, rhs.b);
}

Atas ialah kandungan terperinci Bagaimana Melaksanakan Pesanan Lemah yang Tegas `. 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