我有一个 struct Edge 的 vector ( HLL )。我希望它根据重量对其进行排序 使用 inf 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;
}
从 main 我调用了 STL sort 这给出了以下输出:(
212.132
474.342
300
667.083
500
200
aId 或 bId 的值会影响吗?
我遇到过同样的问题 我用的是苹果 Xcode 5.0 的代码输出
这是我为 UVA 问题编写的完整代码的链接 [ http://ideone.com/39XIqO][1]
UPD:已回答
最佳答案
std::sort()
需要一个boolean,产生 strict weak order 的二进制谓词.您的谓词显然不是 bool 值。不过,将 1
解释为 false
并将 -1
解释为 true
应该会产生严格的弱顺序。
关于c++ - 自定义结构的排序不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27720429/