使用pred c ++进行自定义排序

时间:2018-05-10 03:14:14

标签: c++ sorting

我有一个矢量线,我创建了结构来对x轴和y轴进行排序:

struct linesSort {
    bool operator() (Vec4i l1, Vec4i l2) {
        int x1 = l1[0];
        int y1 = l1[1];
        int x2 = l2[0];
        int y2 = l2[1];
        if (x1 == x2) return (y1 < y2);
        else return (x1 < x2);
    }
};

然后我打电话给:sort(lines.begin(), lines.end(), linesSort());

结果是prety good除了某些情况,线的2个边缘位置相互变化。如:

[0, 328, 639, 272]
[0, 329, 1, 297]
[0, 347, 639, 291]
[0, 367, 639, 311]
[639, 311, 0, 368]
[0, 368, 639, 310]
[639, 310, 0, 369]
[639, 310, 0, 369]
[0, 387, 639, 331]

我哪里错了?请帮忙!

0 个答案:

没有答案