对pair <int,int> </int,int>的向量进行排序

时间:2014-05-10 11:59:36

标签: c++ sorting stl

如果在STL中使用std :: sort()使用<int,int>对,则按降序排序对向量?它应首先针对第一个元素排序,然后排序第二个元素。 / p>

2 个答案:

答案 0 :(得分:1)

operator<的{​​{1}}已超载,因此您可以像对待任何其他向量一样对对向量进行排序。如果您需要降序,您有两个选项 - 排序然后调用pair<int,int>来反转结果或为排序提供谓词。

您还可以使用std::reverse

std::greater

答案 1 :(得分:0)

使用此,

template<class T>
struct sortFunctor: public unary_function<std::pair<int, int>, std::pair<int, int>>
{
    bool operator()(const std::pair<int, int>& First, const std::pair<int, int>& Second)
    {
        if(First.first < Second.first)
        {
            return false;
        }
        if(First.first == Second.first && First.second < Second.second)
        {
            return false;
        }
        return true;
    }
}

然后将此仿函数作为第三个参数传递给sort函数。