我有一个简单的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。