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

Bagaimana untuk Mentakrifkan `

Patricia Arquette
Lepaskan: 2024-12-22 06:17:31
asal
945 orang telah melayarinya

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);
}
Salin selepas log masuk

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);
}
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan