函数排序错误
Error in function sort
我试图使用STL中的排序函数,但它在执行过程中给了我一个错误。
如果v小于e,比较函数返回true:
bool smallerThan(VertexEntry &v, VertexEntry &e) {
if(v.v[0] < e.v[0]) return true;
else if(v.v[1] < e.v[1]) return true;
else if(v.v[2] < e.v[2]) return true;
return false;
}
下面是调用:
sort(vertices.begin(),vertices.end(),smallerThan);
vector的大小约为400个元素。
有人能帮我解决我的问题吗?谢谢你! !你的比较函数是不正确的——它没有强制执行严格的弱排序。
使用:
bool smallerThan(VertexEntry const & v, VertexEntry const & e) {
if (v.v[0] < e.v[0])
return true;
else if(v.v[0] > e.v[0])
return false;
else if(v.v[1] < e.v[1])
return true;
else if(v.v[1] > e.v[1])
return false;
else if(v.v[2] < e.v[2])
return true;
return false;
}
比较运算符没有强制执行严格的弱排序。如果你能够使用boost,我看到的一个技巧是将你的对象绑定到boost::tuple
并使用其严格的弱operator<
。
如果你需要自己写,像这样的东西应该可以工作:
bool smallerThan(const VertexEntry &v, const VertexEntry &e)
{
if(v.v[0] != e.v[0]) return v.v[0] < e.v[0];
else if(v.v[1] != e.v[1]) return v.v[1] != e.v[1];
else return v.v[2] < e.v[2];
}
相关文章:
- C++选择排序算法中的逻辑错误
- 在c++中尝试对对象数组进行排序时,出现std:bad_alloc错误
- 显示错误输出的简单数组排序程序
- 对单向链表进行排序时出现运行时错误
- 无法在我的堆排序代码中找到错误.无法正确执行.C++
- 在气泡排序程序中未声明错误功能
- 仅在大型阵列上出现合并排序分段错误
- 分段 排序函数实现中的错误
- C++运行时错误与快速排序算法抛出堆栈转储错误
- 字符串上的合并排序上的 Seg 错误
- 将图形表示为unordered_map<字符串、向量>时拓扑排序错误<string>
- C++为什么我的指针选择排序中存在分段错误?
- 我想在 c++ 中对单向链表进行冒泡排序,但我一直面临左值错误,无法解决它
- 尝试按值对地图进行排序,但出现错误
- 使用快速排序对 C++ 中的可视化工具错误进行排序
- 合并排序:分段错误核心转储
- 比较迭代器会使程序崩溃,而不会在自定义气泡排序实现中出现错误
- 合并排序中的错误计数:计数反转
- 使用STL对用户输入数组进行排序的错误有什么解决方案吗?
- C++中的错误排序算法