如何对其中包含地图的列表进行排序

时间:2019-05-10 22:27:30

标签: c++

我正在尝试按第二个浮点数(在pair<float,float>中)对地图列表进行排序,如下所示:

list<map<string, pair<float, float>>>

有人可以帮我吗...

到目前为止,我已经尝试过:

void my_sort(list<map<string, pair<float, float>>> ans)
{
    for (int i = 1; i < ans.size(); i++)
    {
        for (list<map<string, pair<float, float>>>::iterator j = ans.begin(); j < ans.end; j++)
        {
            if(j->)
        }
    }
}

有人可以帮我吗...

1 个答案:

答案 0 :(得分:1)

您不清楚如何比较两张地图,但是一旦弄清楚了,您就可以使用自定义小于运算符执行自定义排序,如下所示:

struct less_than_key
{
    inline bool operator() (map<string, pair<float, float>> &map1, map<string, pair<float, float>> &map2)
    {
        // Here you need to figure out what makes one map 'less than' the other
        // If if a specific key's value.second is < the same in the other map, for example.
        return map1IsLessThanMap2;
    }
};

std::sort(yourList.begin(), yourList.end(), less_than_key());