cpuProgress; int secondRemaini-6ren">
gpt4 book ai didi

c++ - "Debug Assertion Failed!"使用列表容器中的排序功能时出错

转载 作者:行者123 更新时间:2023-11-30 04:31:45 25 4
gpt4 key购买 nike

我在 Visual Studio 2010 中收到以下编译错误。

调试断言失败!表达式:无效运算符<

它是以下比较函数的结果:

bool ShortestJob(Process_T *first, Process_T *second)
{
int firstRemaining = first->cpuTime - first->cpuProgress;
int secondRemaining = second->cpuTime - second->cpuProgress;
if ((firstRemaining < secondRemaining) || ((first->cpuProgress == second->cpuProgress) && (first->processID < second->processID))) {
return true;
} else {
return false;
}
}

字段 processID 是一个 int。我该如何解决这个错误?

最佳答案

如果用于排序的比较函数对象不正确并且不遵循严格的弱排序,Visual Studio 2010 将在调试版本中断言。

尝试将您的功能更改为

bool ShortestJob(Process_T *first, Process_T *second)
{
int firstRemaining = first->cpuTime - first->cpuProgress;
int secondRemaining = second->cpuTime - second->cpuProgress;
if ((firstRemaining < secondRemaining) || ((firstRemaining == secondRemaining) && (first->processID < second->processID))) {
return true;
} else {
return false;
}
}

您定义运算符的方式不正确。您应该只比较 processID 当且仅当第一个条件在您的情况下是 (firstRemaining ,secondRemaining) 是相等的

关于c++ - "Debug Assertion Failed!"使用列表容器中的排序功能时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8074806/

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