c++ - 自定义结构的排序不起作用

标签 c++ xcode macos sorting

我有一个 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/

相关文章:

c++ - 将 OpenCV 窗口嵌入到 Qt GUI 中

python - 通过套接字在 python 中读取 opencv 图像

objective-c - 从 Cocos2D 的 Sprite 表中删除 Sprite 时出错

iOS: Assets 目录中启动图像上的黑线

php - 如何使用 PHP 在 OS X 10.5.8 中启用 Sqlite3?

macos - NSTextField sizeToFit 或框架更新将文本向左移动

c++ - 从 HBITMAP 转换为 IWICBitmap

c++ - 通过构造函数初始化枚举

xcode - XCUITest - 如何在应用程序运行时禁用 Wi Fi?

macos - 无论事件流创建选项如何,都会设置 FSEvents 文件标志