自定义结构排序不起作用

Sorting of custom structure not working

本文关键字:不起作用 排序 结构 自定义      更新时间:2023-10-16

我有一个结构边缘的向量(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 的值会影响吗?

我以前遇到过同样的问题我正在使用苹果电脑Xcode 5.0 的代码输出

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

UPD : 已回答

std::sort()需要一个布尔的二进制谓词,该谓词产生严格的弱序。你的谓词显然不是布尔值。不过,将1解释为false,将-1解释为true应该会产生严格的弱秩序。