AVL树的不同键

时间:2011-12-10 10:31:39

标签: c++ oop

在我的作业中,我得到了这个C风格的结构:

typedef struct {
    int x, y;
} Point;

我有2张AVL树。第一个上的值应首先按X位置排序,然后按Y排序,在第二个树中排序,首先按Y,然后按X排序。

我的C ++有点生疏,所以我想知道我是否认为正确:

因为我有两种形式的排序,我应该有2个额外的类将用作AVL树的键:每个将基于Point类型,并且将赋值运算符重载以便能够从键类型的键类型。

我想使用两个类的原因是重载“<”每个人的操作符,所以我不必有一些奇怪的compareByX(Point p)函数。

AVL树声明的伪代码:

AVLTree< XthenY, Value > firstTree;
AVLTree< YthenX, Value > secondTree;

这是否合理?

我希望我的问题很清楚

1 个答案:

答案 0 :(得分:0)

C ++标准库通过一个应该是函数或函数的模板参数来处理它:

struct XthenY
{
    bool operator()(Point const &a, Point const &b) const
    {
        // comparison logic
    }
};

请参阅original STL docs for map中的strcmp示例。