自定义结构的排序不起作用

时间:2014-12-31 11:23:28

标签: c++ xcode macos sorting

我有一个struct Edge的向量(HLL)。我希望它根据它的重量进行排序 usinf C ++ std :: sort()

struct Edge {
    ll aId, bId ;
    double w;
    Edge(){}


    bool operator < (const Edge & E)const
    {
            if(w < E.w) return -1;
            else return 1;
    }

 };

// Here follows many push operations 

sort(HLL.begin(), HLL.end());
for(int i = 0 ; i < HLL.size() ; i ++ ){
         cout << HLL[i].w << endl;
 }

从主要我称为STL排序 这给出了以下输出:(

212.132
474.342
300
667.083
500
200

aId或bId的值是否会影响?

我之前遇到过同样的问题 我正在使用mac Xcode 5.0的代码输出

以下是为UVA问题编写的完整代码的链接[http://ideone.com/39XIqO][1]

UPD:ANSWERED

1 个答案:

答案 0 :(得分:1)

std::sort()需要布尔,二元谓词,它产生strict weak order。你的谓词显然不是布尔值。将1解释为false和将-1解释为true应该会产生严格的弱订单。