Bagaimanakah saya boleh menyesuaikan pembanding untuk peta dalam C untuk mengisih kekunci mengikut panjangnya?

Susan Sarandon
Lepaskan: 2024-11-04 08:02:02
asal
493 orang telah melayarinya

How can I customize the comparator for a map in C   to sort keys by their length?

Menyesuaikan Pembanding untuk Peta

Dalam C , std::map menggunakan pembanding untuk menyusun elemennya. Secara lalai, peta menggunakan operator kurang daripada (<) untuk membandingkan kekunci. Walau bagaimanapun, adalah mungkin untuk mengatasi gelagat lalai ini dengan menyediakan pembanding tersuai.

Soalan ini membincangkan cara menyesuaikan pembanding untuk peta untuk mengisih kekunci mengikut panjangnya dan bukannya mengikut abjad. Inilah penyelesaiannya:

Penyelesaian menggunakan Kelas Tersuai

std::map membenarkan sehingga empat argumen jenis templat, yang ketiga ialah pembanding. Berikut ialah contoh kelas tersuai yang melaksanakan pembanding berdasarkan panjang rentetan:

<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

Untuk menggunakan pembanding tersuai ini, buat peta dengan hujah templat berikut:

<code class="cpp">std::map<std::string, std::string, cmpByStringLength> myMap;</p>
<p><strong>Penyelesaian menggunakan Constructor Argument</strong></p>
<p>Sebagai alternatif, anda boleh menghantar komparator kepada pembina peta. Sintaks ini bersamaan dengan contoh sebelumnya:</p>
<pre class="brush:php;toolbar:false"><code class="cpp">std::map<std::string, std::string, cmpByStringLength> myMap(cmpByStringLength());</code>
Salin selepas log masuk

Nota: Apabila membandingkan mengikut panjang, hanya satu rentetan bagi setiap panjang boleh hadir dalam peta sebagai kunci.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menyesuaikan pembanding untuk peta dalam C untuk mengisih kekunci mengikut panjangnya?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!