我有一个Edge结构的vector(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:已回答

最佳答案

std::sort()需要一个布尔型二进制谓词,该谓词产生一个strict weak order。您的谓词显然不是布尔值。但是,将1解释为false,将-1解释为true应该会产生严格的弱阶。

08-03 21:52