разные ключи с деревьями AVL - PullRequest
       0

разные ключи с деревьями AVL

0 голосов
/ 10 декабря 2011

В моей домашней работе мне дали такую ​​структуру в стиле C:

typedef struct {
    int x, y;
} Point;

У меня есть 2 дерева AVL.значения в первом должны быть отсортированы сначала по расположению X, затем по Y, а во втором дереве, сначала по Y, а затем по X.

мой C ++ немного ржавый, поэтому я хочу знать, понял ли яэто правильно:

, поскольку у меня есть 2 формы сортировки, у меня должно быть 2 дополнительных класса, которые будут использоваться в качестве ключей для деревьев AVL: каждый будет основан на типе Point, и оператор присваивания будет перегружен вбыть в состоянии преобразовать из типа ключа в тип Point.

причина, по которой я хочу использовать два класса, состоит в том, чтобы перегрузить оператор "<" для каждого из них, поэтому мне не нужно иметь некоторые нечетные <code>compareByX(Point p) функция.

псевдокод для объявления деревьев AVL:

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

это разумно сделать?

надеюсь, мой вопрос был достаточно ясен

1 Ответ

0 голосов
/ 10 декабря 2011

Стандартная библиотека C ++ обрабатывает это с помощью аргумента шаблона, который должен быть функцией или функционалом:

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

См., Например, пример strcmp в оригинальных документах STL для map.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...