Apabila membina struktur ringan yang mengandungi hanya dua elemen, ramai pembangun memilih std::pair kerana sokongan terbina dalam untuk operasi utama seperti operator< untuk pesanan yang ketat-lemah. Walau bagaimanapun, pendekatan ini memberikan kelemahan dalam bentuk penamaan pembolehubah yang tidak membantu yang boleh menyebabkan kekeliruan. Pasangan bersarang menjadi kurang diingini dengan lebih daripada dua ahli.
Penyelesaian alternatif melibatkan penggunaan tupel daripada Boost atau C 11. Walaupun tupel menawarkan struktur dan kejelasan yang lebih baik berbanding dengan std::pair, ia masih boleh menyusahkan untuk digunakan . Untuk mengurangkan isu ini, pembangun boleh mempertimbangkan untuk menggunakan operasi berasaskan tie.
bool operator<(MyStruct const& lhs, MyStruct const& rhs){ return std::tie(lhs.one_member, lhs.another, lhs.yet_more) < std::tie(rhs.one_member, rhs.another, rhs.yet_more); }
Dalam keadaan ini, tie mencipta satu tuple rujukan daripada hujah yang diluluskan. Faedah pendekatan ini termasuk:
Semasa mewarisi secara peribadi daripada tupel boleh dicadangkan sebagai alternatif, ia mempamerkan beberapa kelemahan:
Secara keseluruhan, pelaksanaan perbandingan operator melalui tupel dan tie membentangkan pilihan yang berdaya maju untuk pelaksanaan operator yang dipermudahkan dan betul. Walau bagaimanapun, implikasi prestasi harus dipertimbangkan dan ditangani jika pemprofilan mendedahkan bahawa operasi perbandingan adalah halangan dalam pelaksanaan aplikasi.
Atas ialah kandungan terperinci Bagaimanakah Tuples dan `std::tie` Memudahkan Pelaksanaan Operator Perbandingan dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!