お世話になっております。
stlのmapをstd::sortを使用し以下のソートを行いたいと思っています。
・キーでのソート
・値でのソート
sortの引数に以下のように渡してもエラーが出てしまいます。
std::map<CString, CString> Data;
std::sort(Data.begin(), Data.end(), std::greater<CString> >());
ソートする場合はベクトルに一度代入しないとソートすることができないのでしょうか?
std::vector<CStrign> Data;
std::sort(Data.begin(), Data.end(), std::greater<CString> >());
>エラーが出てしまいます
コンパイルエラー、リンクエラー、実行時のエラーのどれでしょうか?
コンパイルエラーや、リンクエラーなら、エラー番号とエラーメッセージ等を正直に示して
下さい
マップで何故、どのようなソートが必要なのでしょうか?
ソートできたとして、どうしたいのでしょうか?
あと、コンパイラーやどういった STL をお使いなのかお示しください
mapはキーの大小を基に要素を管理しているので、ユーザが勝手に変更できません。
デフォルトではキーの昇順に格納されるのを、降順にしたいということでしょうか。
降順のマップだけがほしいのであれば、
std::map< CString, CString, std::greater< CString > > Data;
とするし、
昇順のマップから降順のマップにデータをコピーするなら、
std::map< CString ,CString > DataA; // 昇順のマップ
// DataAにデータを格納
std::map< CString, CString, std::greater< CString > > DataB; // 降順のマップ
std::copy( DataA.begin(), DataA.end(), std::inserter( DataB, DataB.begin() ) );
とでもするのかな。
# 昇順のマップを降順に、あるいはその逆の変更はできません。
std::mapがどんな物かを突き詰めれば、ソートできないことは自明の理かと。
動的にソートが必要なのであれば、普通のvectorとかでも良い様な気がします。
mapでできればいいなと思い質問させていただいたのですが、
やはり無理なようですね。
vectorとpairを使ってソートを行いたいと思います。
ありがとうございました。