Rumah > pembangunan bahagian belakang > C++ > Apakah Keperluan Utama yang Mesti Ditemui Kelas untuk Digunakan sebagai Kunci dalam std::map?

Apakah Keperluan Utama yang Mesti Ditemui Kelas untuk Digunakan sebagai Kunci dalam std::map?

Susan Sarandon
Lepaskan: 2024-11-28 06:43:18
asal
478 orang telah melayarinya

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

Keperluan Utama untuk std::map

std::map, bekas nilai kunci dalam C , memerlukan ciri tertentu daripada kuncinya kelas untuk memastikan kefungsian yang betul. Terutamanya, keperluan berikut mesti dipenuhi:

Kebolehsalinan dan Kebolehtugasan:
Kunci peta mesti boleh disalin dan diserahkan, membolehkan nilainya disimpan dan diurus dengan cekap dalam bekas.

Operator Perbandingan:
Untuk mengekalkan pesanan structure, std::map bergantung pada operator perbandingan yang ditakrifkan untuk kelas utama. Operator ini menentukan susunan relatif kunci dan membenarkan bekas mengisih dan mendapatkan semula elemen berdasarkan nilai kunci.

Penyusunan Tegas:
Operator perbandingan untuk kelas utama mesti menentukan pesanan yang ketat. Bagi setiap pasangan kekunci a dan b, pengendali mesti memenuhi syarat berikut:

  • Jika Cmp(a, b) == benar, maka Cmp(b, a) == salah.
  • Jika kedua-dua Cmp(a, b) == false dan Cmp(b, a) == false, a dan b dianggap sama dan tergolong dalam kesetaraan yang sama kelas.

Contoh Pelaksanaan:

Jika kelas utama kekurangan pengendali yang diperlukan ini, kelas pembalut boleh dibuat untuk melaksanakannya. Sebagai contoh, kelas pembalut berikut menyediakan kefungsian perbandingan untuk struct MyType:

struct CmpMyType {
    bool operator()(MyType const& lhs, MyType const& rhs) const {
        // Comparison logic for MyType
    }
};
Salin selepas log masuk

Dengan menggunakan kelas pembalut seperti CmpMyType, struct MyType asal boleh digunakan sebagai kunci dalam std::map tanpa mengubah suainya pelaksanaan.

Atas ialah kandungan terperinci Apakah Keperluan Utama yang Mesti Ditemui Kelas untuk Digunakan sebagai Kunci dalam 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