我正在尝试使用STL中的sort函数,但它在执行期间给出了一个错误.
如果v小于e,我的compare函数返回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;
}
Run Code Online (Sandbox Code Playgroud)
这是电话:
sort(vertices.begin(),vertices.end(),smallerThan);
Run Code Online (Sandbox Code Playgroud)
矢量的大小是aprox 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;
}
Run Code Online (Sandbox Code Playgroud)