Rumah > pembangunan bahagian belakang > C++ > Bolehkah Mana-mana Kelas Berfungsi sebagai Kunci untuk std::map?

Bolehkah Mana-mana Kelas Berfungsi sebagai Kunci untuk std::map?

Patricia Arquette
Lepaskan: 2024-11-26 08:05:11
asal
297 orang telah melayarinya

Can Any Class Serve as a Key for std::map?

Kunci untuk std::map: Keperluan dan Pelaksanaan

Apabila menggunakan std::map untuk memetakan objek kelas yang berbeza, kelas yang anda berniat untuk digunakan sebagai kunci mungkin tidak memenuhi keperluan yang diperlukan untuk kunci yang sah. std::map menyusun kandungannya menggunakan mekanisme pesanan, yang menimbulkan persoalan sama ada mana-mana kelas arbitrari boleh berfungsi sebagai kunci atau jika keperluan khusus wujud.

Kunci untuk std::map mesti mematuhi perkara berikut keperluan:

  • Kebolehsalinan dan Kebolehtugasan: Kelas utama mesti boleh disalin dan ditetapkan.

Penyusunan peta dikawal oleh argumen templat ketiga atau argumen pembina, yang lalai kepada std::less. Secara lalai, std::less memanfaatkan < pengendali. Walau bagaimanapun, anda mempunyai fleksibiliti untuk menentukan operator perbandingan anda sendiri:

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

Pastikan operator perbandingan anda mentakrifkan pesanan yang ketat. Jika CmpMyType()( a, b ) mengembalikan benar, CmpMyType()( b, a ) mesti mengembalikan palsu. Apabila kedua-duanya mengembalikan palsu, elemen dianggap setara dan tergolong dalam kelas kesetaraan yang sama.

Atas ialah kandungan terperinci Bolehkah Mana-mana Kelas Berfungsi sebagai Kunci untuk 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan