2016-06-15 3 views
-1

昇順に値を与えることができるコンパレータ/ソート関数を作成したいと思います。値は16進数です。マップの値のプロパティに基づいてソート

map<string, vector<class_A objects> > 

ベクトルの各オブジェクトに関連付けられた1つのヘクスプロパティがあります:

は、マップのタイプがあるとしましょう。そのプロパティを 'z'と呼ぶことができます。六角形のプロパティでは、11'h000の形式で 'hex'型のプロパティがあるか、11'hfffである可能性があります。 16進のプロパティに基づいてそのベクトルをソートしたいと思います。

私のベクトルに現在あるものは、それぞれ '11'h000、11'h00b、11'h007の' z 'プロパティです。私はそれがなるように 'z'プロパティに基づいてそのベクトルを並べ替える必要があります。

必要に応じて詳細を記入していただければ幸いです。

+0

ですから、ベクトルをソートする方法を求めていますか?それには多くの重複があります。 – juanchopanza

答えて

1

私はあなたの質問が述べているようにマップ自体ではなく、マップ内のベクトルをソートすることを話しています。

あなたは比較を定義するために、適切なラムダと、std::sortを使用することができます。

//suppose myMap is a std::map<string, std::vector<class_A> 
std::vector<class_A>& vec = myMap["SomeKey"]; 
std::sort(vec.begin(), vec.end(), [](const class_A& lhs, const class_A& rhs) { return lhs.z < rhs.z; }) 
関連する問題