Мне нужно написать шаблон с узлами, содержащими данные с двумя структурами данных: карта и минимальная куча, оба имеют одинаковые узлы, и каждые 2 одинаковых узла связаны. проблема в том, что мне нужна куча, чтобы знать поля узла для heapify, например, и я не знаю, как правильно это сделать, друзья? общедоступные поля в узле? запись узла внутри кучи? с помощью геттеров и сеттеров? спасибо всем за вашу помощь.
Как написать шаблон?
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
Вы должны поместить класс Node только в пространство имен детализации ТЫ.
- person Viktor Sehr; 19.09.2010