Как написать шаблон?

Мне нужно написать шаблон с узлами, содержащими данные с двумя структурами данных: карта и минимальная куча, оба имеют одинаковые узлы, и каждые 2 одинаковых узла связаны. проблема в том, что мне нужна куча, чтобы знать поля узла для heapify, например, и я не знаю, как правильно это сделать, друзья? общедоступные поля в узле? запись узла внутри кучи? с помощью геттеров и сеттеров? спасибо всем за вашу помощь.


person Roy Gavrielov    schedule 19.09.2010    source источник
comment
Эм, чувак? То же, что и как реализовать minheap с использованием шаблона?   -  person Konrad Rudolph    schedule 19.09.2010


Ответы (1)


Ну, связанный список может быть выложен следующим образом:

namespace my_namespace
{
namespace detail 
{
template <class T>
struct Node
{
    T value;
    Node* previous;
    Node* next;
    //constructors and other things that might help
};
}

template <class T>
class LinkedList
{
private:
    detail::Node<T>* head;
public:
    //all it does    
};
}

Нет особой причины скрывать структуру Node от пользователя или класса LinkedList (помещения ее в подробное пространство имен должно быть более чем достаточно): LinkedList нуждается в ней, а сам Node практически бесполезен для пользователя. Вся инкапсуляция зависит от LinkedList: он просто не должен выдавать свою голову (или любую другую Node*).

person UncleBens    schedule 19.09.2010
comment
Вы должны поместить класс Node только в пространство имен детализации ТЫ. - person Viktor Sehr; 19.09.2010