按值對std::map 進行排序
按值而不是鍵對std::map 進行排序可能比按排序更複雜鑰匙。以下是對此問題的深入分析與解決方案:
解決方案1:使用Multimap
要按值對std::map 進行排序,我們可以建立一個多重映射,其中值作為鍵,鍵作為值。這允許我們按值排序,如下例所示:
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; }
透過迭代原始映射並將翻轉的對插入到多重映射中,我們本質上反轉了鍵值關係,然後可以按新鍵(原始值)排序。
解決方案2:通用關聯容器(例如std::unordered_map),我們可以使用以下通用解決方案:
此重載適用於std::map和std::unordered_map透過使用可變參數模板來處理不同的關聯容器類型。
以上是如何按值而不是鍵對 std::map 進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!