Rumah > pembangunan bahagian belakang > C++ > Bolehkah Kelas Tersuai Saya Digunakan sebagai Kunci dalam C std::map?

Bolehkah Kelas Tersuai Saya Digunakan sebagai Kunci dalam C std::map?

Linda Hamilton
Lepaskan: 2024-11-23 09:43:13
asal
372 orang telah melayarinya

Can My Custom Class Be Used as a Key in a C   std::map?

Menggunakan Kelas Arbitrari sebagai Kunci dalam std::map

std::map, komponen asas Perpustakaan Templat Standard C, dengan cekap mengaitkan pasangan nilai kunci. Apabila menggunakan kelas tersuai sebagai kunci, kriteria tertentu mesti dipenuhi untuk memastikan operasi yang sah.

Keperluan untuk Kelas Utama

Untuk kelas berfungsi sebagai kunci yang sah dalam std ::map, ia mesti memenuhi keperluan berikut:

  1. Kebolehsalinan dan Kebolehtugasan: Kunci mesti boleh disalin dan diserahkan, membolehkan penduaan dan pengubahsuaian yang cekap dalam peta.
  2. Pemesanan: Susunan elemen dalam std::map ditentukan oleh yang ketiga hujah templat atau hujah pembina yang digunakan. Secara lalai, ini lalai kepada std::less, yang menggunakan < pengendali. Walau bagaimanapun, pengendali perbandingan tersuai boleh ditakrifkan untuk menentukan kriteria pesanan alternatif.

Menentukan Operator Perbandingan Tersuai

Jika pesanan lalai tidak memenuhi keperluan anda, anda boleh menentukan pengendali perbandingan tersuai sebagai objek berfungsi. Pengendali ini mesti melaksanakan susunan yang ketat, bermakna untuk mana-mana dua kekunci a dan b, syarat berikut mesti dipegang:

  • CmpMyType()(a, b) == benar membayangkan CmpMyType()(b , a) == false
  • CmpMyType()(a, b) == false dan CmpMyType()(b, a) == false membayangkan a == b

Dengan memenuhi keperluan ini, kelas tersuai boleh digunakan dengan lancar sebagai kunci dalam std::map, membolehkan pesanan yang cekap dan mendapatkan semula nilai yang berkaitan.

Atas ialah kandungan terperinci Bolehkah Kelas Tersuai Saya Digunakan sebagai Kunci dalam C 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