我有一个结构向量,我需要有关如何根据其中一个值对它们进行排序的帮助,如果这两个值相同,则根据另一个参数对其进行排序。
这与其他问题类似,但有更多问题。
我要实现的是基于扫描线的多边形填充算法。
我构建了活动边列表,但随后我需要根据每个结构对象中的 x 值对其进行排序。如果 x 值相同,则需要根据每个结构对象的斜率的倒数对它们进行排序。
这是具有覆盖运算符 < 的结构定义,用于正常排序:
struct Bucket
{
// Fields of a bucket list
int ymax, x, dx, dy, sum;
// Override the < operator, used for sorting based on the x value
bool operator < (const Bucket& var) const
{
// Check if the x values are the same, if so
// sort based on the ivnerse of the slope (dx/dy)
/*if(x == var.x)
return (dx/dy) < (var.dx/var.dy);
else*/
return (x < var.x);
}
};
我注释掉了 if then else 语句,因为它确实可以编译,但会导致浮点错误并且程序崩溃。确切的错误是:“浮点异常(核心转储)”
我还尝试将每个部门转换为 (int) 但这也不起作用。
我的问题:有没有办法进行类似于我的排序,或者我应该编写自己的排序方法。
如果我应该制作自己的排序方法,请提供一个链接或一些可以提供帮助的简单方法。
谢谢