我有一个简单的Rectangle结构,它带有x,y,宽度和高度,我认为使用 vector 很容易,但是结果却很混乱。

这是我主要的:

vector<CvRect> v;
v.push_back(cvRect(50,0,50, 50));
v.push_back(cvRect(150, 0, 50,50));
v.push_back(cvRect(100, 0, 50,50));
sort(v.begin(), v.end(), rectangleCmpByPosition);

我在标题中声明了这个
static int rectangleCmpByPosition(const CvRect &a, const CvRect &b);

以此为定义:
static int rectangleCmpByPosition(const CvRect& a, const CvRect &b){
    if (a.y != b.y){
        return a.y - b.y;
    }else{
        return a.x - b.x;
    }
}

Visual Studio向我抛出此错误消息。

我整个下午都在谷歌搜索,以了解我做错了什么,但是找不到原因。请帮忙。

最佳答案

您的比较器不正确。如果bool“小于” true,则比较器需要返回a:b,否则返回false。它需要提供一个strict weak ordering

09-25 19:56