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
259 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!

sumber:php.cn
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