Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menyesuaikan Pengisihan Kunci dalam Peta C?

Bagaimana untuk Menyesuaikan Pengisihan Kunci dalam Peta C?

DDD
DDDasal
2024-11-03 22:14:30990semak imbas

How to Customize the Sorting of Keys in C   Maps?

Pembanding Tersuai untuk Peta

Dalam C , peta menggunakan fungsi perbandingan untuk menyusun pasangan nilai kunci mereka. Secara lalai, pembanding rentetan terbina dalam peta membandingkan rentetan mengikut abjad. Walau bagaimanapun, anda boleh mengatasi pembanding ini untuk menentukan kriteria perbandingan anda sendiri.

Menggunakan Pembanding Tersuai

Untuk menentukan pembanding rentetan anda sendiri, cipta struct yang melaksanakan operator () kaedah. Kaedah harus mengambil dua rentetan sebagai argumen dan mengembalikan nilai boolean yang menunjukkan susunannya:

<code class="cpp">struct cmpByStringLength {
    bool operator()(const std::string& a, const std::string& b) const {
        return a.length() < b.length();
    }
};

Pembanding ini membandingkan rentetan mengikut panjangnya, menaik.

Membuat Peta dengan Pembanding Tersuai

Untuk membuat peta menggunakan pembanding tersuai anda, sediakan ia sebagai hujah templat ketiga:

<code class="cpp">std::map<std::string, std::string, cmpByStringLength> myMap;</code>

Sebagai alternatif, anda boleh menghantar pembanding kepada pembina peta:

<code class="cpp">std::map<std::string, std::string> myMap(cmpByStringLength());</code>

Pilihan Isih Lain

Mengatasi pembanding membolehkan anda mengisih peta anda berdasarkan mana-mana kriteria tersuai. Ambil perhatian bahawa apabila membandingkan mengikut panjang, hanya satu rentetan bagi setiap panjang boleh menjadi kunci unik dalam peta.

Untuk keperluan pengisihan yang lebih kompleks, anda juga boleh meneroka menggunakan perpustakaan pihak ketiga seperti bekas multi_index Boost.

Atas ialah kandungan terperinci Bagaimana untuk Menyesuaikan Pengisihan Kunci dalam Peta C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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