Bagaimana untuk Menyesuaikan Pengisihan Kunci dalam Peta C?

DDD
Lepaskan: 2024-11-03 22:14:30
asal
989 orang telah melayarinya

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();
    }
};
Salin selepas log masuk

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>
Salin selepas log masuk

Sebagai alternatif, anda boleh menghantar pembanding kepada pembina peta:

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

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan