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:
Pelaksanaan
Takrifan di atas boleh dilaksanakan dalam C menggunakan langkah berikut:
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!