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