我有一个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
答案 0 :(得分:1)
std::sort()
需要布尔,二元谓词,它产生strict weak order。你的谓词显然不是布尔值。将1
解释为false
和将-1
解释为true
应该会产生严格的弱订单。