値による std::map の並べ替え
値による std::map の並べ替えには、標準の sort() 関数と同様の代替アプローチが必要です要素をキーによってのみ並べ替えます。これを実現するには、次の解決策を検討してください。
キーと値を反転
以下を使用して、元のマップのキーと値のペアを反転する新しいマルチマップを作成します。 function:
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; }
Usage:
元のマップ (例: 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::unowned_map の両方で機能します。フリップのソース。
以上がstd::map をキーではなく値で並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。