Rumah >pembangunan bahagian belakang >C++ >Bagaimana Saya Boleh Isih std::map mengikut Nilai, Bukan Kunci?
Isih std::peta mengikut Nilai
Isih std::peta mengikut nilai memerlukan pendekatan alternatif sebagai fungsi sort() standard hanya menyusun elemen mengikut kunci. Untuk mencapai matlamat ini, pertimbangkan penyelesaian berikut:
Flip Key and Value
Buat multimap baharu yang menterbalikkan pasangan kunci dan nilai peta asal menggunakan fungsi berikut :
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; }
Penggunaan:
Selepas mencipta peta asal (cth., std::map
std::multimap<double, int> dst = flip_map(src);
Sumber Bersekutu Generik
Penyelesaian ini boleh digeneralisasikan untuk berfungsi dengan mana-mana bekas bersekutu menggunakan variadic templat:
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; }
Ini berfungsi untuk kedua-dua std::map dan std::unordered_map sebagai sumber flip.
Atas ialah kandungan terperinci Bagaimana Saya Boleh Isih std::map mengikut Nilai, Bukan Kunci?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!