Rumah > pembangunan bahagian belakang > C++ > Apakah Keperluan Utama yang Mesti Dipuaskan Kelas untuk Digunakan sebagai Key in std::map?

Apakah Keperluan Utama yang Mesti Dipuaskan Kelas untuk Digunakan sebagai Key in std::map?

Patricia Arquette
Lepaskan: 2024-12-08 04:38:11
asal
825 orang telah melayarinya

What Key Requirements Must a Class Satisfy to Be Used as a Key in std::map?

Keperluan Utama untuk std::map

Dalam menggunakan std::map, persoalan biasa timbul mengenai ciri-ciri yang mesti dimiliki oleh kelas utama untuk berfungsi sebagai kunci yang sah.

Prasyaratnya agak mudah: kelas kunci mesti menyediakan salinan dan tugasan keupayaan. Susunan sebenar dalam peta ditentukan oleh hujah templat ketiga atau hujah pembina (jika dinyatakan). Argumen ini biasanya lalai kepada std::less, yang seterusnya lalai kepada operator kurang daripada (<). Walau bagaimanapun, penggunaan lalai adalah tidak wajib.

Untuk menyesuaikan susunan kunci, anda boleh mencipta pengendali perbandingan, sebaik-baiknya sebagai objek berfungsi. Berikut ialah contoh operator sedemikian untuk jenis hipotesis MyType:

struct CmpMyType
{
    bool operator()(MyType const& lhs, MyType const& rhs) const
    {
        // Implementation of the comparison logic...
    }
};
Salin selepas log masuk

Perhatikan bahawa pengendali perbandingan ini mesti menentukan susunan yang ketat. Khususnya, jika CmpMyType()(a, b) mengembalikan benar, maka CmpMyType()(b, a) mesti mengembalikan palsu. Jika kedua-dua ungkapan dinilai palsu, unsur-unsur dianggap sama dan tergolong dalam kelas kesetaraan yang sama. Dengan mematuhi keperluan ini, anda boleh melanjutkan kefungsian kelas kunci anda untuk berfungsi sebagai kunci yang sah dalam std::map.

Atas ialah kandungan terperinci Apakah Keperluan Utama yang Mesti Dipuaskan Kelas untuk Digunakan sebagai Key in std::map?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan