按值對std::map 進行排序
按值對std::map 進行排序需要使用標準sort() 函數的替代方法僅按鍵對元素進行排序。要實現此目的,請考慮以下解決方案:
翻轉鍵和值
使用以下命令創建一個新的多重映射,翻轉原始映射的鍵和值對函數:
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; }
用法:
建立原始地圖後(例如,std::map
std::multimap<double, int> dst = flip_map(src);
通用關聯來源
此解決方案可以推廣到使用可變參數模板與任何關聯容器一起使用:
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; }
這適用於std::map 和std::unordered_map作為源翻蓋的。
以上是如何按值而不是鍵對 std::map 進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!