我想编写一个比较器/排序函数,它可以按升序给出值。值以十六进制表示。
让我们说map是类型:
map<string, vector<class_A objects> >
有一个与向量的每个对象关联的十六进制属性。让我们将该属性称为'z'。通过十六进制属性,我的意思是存在“十六进制”类型的属性,其形式为11'h000或者可以是11'hfff。 我想基于十六进制属性对该向量进行排序。
我目前在载体中的含义是它们的'z'属性分别为11'h000,11'h00b,11'h007。我需要根据'z'属性对该向量进行排序,使其成为。
如果需要,我会很乐意写下更多细节。
答案 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; })