gpt4 book ai didi

c++ - 对结构 vector 进行排序会导致 Visual Studio 抛出带有 "Debug Assertion Failed"的弹出窗口

转载 作者:行者123 更新时间:2023-11-27 23:30:30 28 4
gpt4 key购买 nike

我有一个包含 x、y、宽度和高度的简单 Rectangle 结构,我认为它很容易处理 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 向我抛出此错误消息 enter image description here .

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

最佳答案

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

关于c++ - 对结构 vector 进行排序会导致 Visual Studio 抛出带有 "Debug Assertion Failed"的弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5767959/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com