我有一个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
应该会产生严格的弱阶。