Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah saya Boleh Menyusun std::map mengikut Nilai dalam C ?

Bagaimanakah saya Boleh Menyusun std::map mengikut Nilai dalam C ?

DDD
Lepaskan: 2024-11-30 19:01:12
asal
1009 orang telah melayarinya

How Can I Sort an std::map by Value in C  ?

Mengisih std::map mengikut Nilai

Soalan: Bagaimanakah saya boleh mengisih std::map dengan mudah berdasarkannya nilai?

Jawapan:

Pendekatan Tradisional (Sebelum C 11)

Sebelum pengenalan C 11, mengisih peta mengikut nilai memerlukan langkah perantara untuk menukar std::map menjadi a std::pasangan. Ini melibatkan penggunaan fungsi isihan tersuai dan menentukan parameter perbandingan secara manual.

Pendekatan C 11

Dengan kemunculan C 11, penyelesaian yang lebih bersih muncul. Coretan kod berikut menunjukkan cara:

template<typename A, typename B>
std::multimap<B,A> flip_map(const std::map<A,B> &src)
{
    std::multimap<B,A> dst;
    std::transform(src.begin(), src.end(), std::inserter(dst, dst.begin()),
                   flip_pair<A,B>);
    return dst;
}
Salin selepas log masuk

Fungsi ini secara berkesan membalikkan pasangan nilai kunci dalam peta, membolehkan anda mengulangi nilai yang diisih.

Sumber Bersekutu Generik (C 11 dan Ke Atas)

Untuk lebih fleksibiliti, kaedah generik versi fungsi flipping boleh dibuat, membenarkan ia berfungsi dengan mana-mana bekas bersekutu:

template<typename A, typename B, template<class,class,class...> class M, class... Args>
std::multimap<B,A> flip_map(const M<A,B,Args...> &src)
{
    std::multimap<B,A> dst;
    std::transform(src.begin(), src.end(),
                   std::inserter(dst, dst.begin()),
                   flip_pair<A,B>);
    return dst;
}
Salin selepas log masuk

Fungsi ini mengambil mana-mana kelas bekas bersekutu sebagai input, menjadikannya mudah untuk digunakan dengan kedua-dua std::map dan std ::unordered_map.

Atas ialah kandungan terperinci Bagaimanakah saya Boleh Menyusun std::map mengikut Nilai dalam 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