根据其值的属性对地图进行排序

时间:2016-06-15 07:32:13

标签: c++ sorting

我想编写一个比较器/排序函数,它可以按升序给出值。值以十六进制表示。

让我们说map是类型:

map<string, vector<class_A objects> >

有一个与向量的每个对象关联的十六进制属性。让我们将该属性称为'z'。通过十六进制属性,我的意思是存在“十六进制”类型的属性,其形式为11'h000或者可以是11'hfff。 我想基于十六进制属性对该向量进行排序。

我目前在载体中的含义是它们的'z'属性分别为11'h000,11'h00b,11'h007。我需要根据'z'属性对该向量进行排序,使其成为。

如果需要,我会很乐意写下更多细节。

1 个答案:

答案 0 :(得分:1)

我认为你正在谈论在地图中对矢量进行排序,而不是像你的问题那样对地图进行排序。

您可以使用std::sort和适当的lambda来定义比较:

//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; })