Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mentakrifkan `

Bagaimana untuk Mentakrifkan `

Patricia Arquette
Patricia Arquetteasal
2024-12-22 06:17:31886semak imbas

How to Define the `

Mentakrifkan Operator '<' untuk Pesanan Lemah Tegas pada Tuple

Untuk n-tuple untuk memenuhi pesanan lemah yang ketat, ia mesti memenuhi kriteria berikut:

  • Kesamaan: Dua tuple x dan y ialah setara jika tiada x < y mahupun y < x berlaku.
  • Asimetri: Jika x < y, kemudian y < x tidak boleh benar.
  • Transitiviti: Jika x < y dan y < z, kemudian x < z.

Sementara perpustakaan boost menawarkan kelas tuple yang telah ditetapkan dengan operator '<' mematuhi pesanan lemah yang ketat, anda mungkin ingin menentukan operator anda sendiri untuk konteks tertentu.

Berikut ialah cara anda boleh melaksanakan operator '<' secara manual:

struct S
{
     ThingA   a;
     ThingB   b;
};

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

Dalam contoh ini, kami memanfaatkan fungsi std::make_tuple untuk mencipta tupel daripada elemen individu S tanpa menyalinnya. Kemudian, kami membandingkan tupel menggunakan operator perbandingan tupel generik.

Untuk operator '==', anda boleh mengikuti pendekatan yang serupa:

bool operator==(S const& lhs, S const& rhs)
{
    return std::make_tuple(lhs.a, lhs.b) == std::make_tuple(rhs.a, rhs.b);
}

Ingat bahawa pelaksanaan ini menganggap bahawa ThingA dan ThingB mempunyai operator sendiri '<' dan operator '==' ditakrifkan untuk pesanan lemah yang ketat.

Atas ialah kandungan terperinci Bagaimana untuk Mentakrifkan `. 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