4
typedef pair<int,int>ii;
vector<ii>vii;

sort(vii.begin(),vii.end(),comp);

 ii comp(ii a,ii b){
   if(a.first>b.first)
   return a;
   else if(a.first==b.first){
    if(a.second>b.second)
    return a;
    else
    return b;
   }
   else{
    return b;
   }
 }

//この方法では、コンパイル エラーがスローされます。//比較関数で指定された条件に従って、このベクトルをソートする方法を教えてください。

4

1 に答える 1

8

おそらく、それらを辞書順に昇順で並べ替えたいと思うでしょう。あなたはこれを行うことができます:

std::sort(vii.begin(), vii.end(), std::greater<std::pair<int,int>>());

比較ファンクターは二項述語であり、ブール値を返し、厳密な弱い順序付けを実装する必要があります。std::greater<std::pair<int,int>>あなたのためにそれを行います。

于 2013-11-05T17:45:24.710 に答える