Как да напиша шаблон?

Трябва да напиша шаблон с възли, съдържащ данни с 2 структури от данни: карта и минимална купчина, и двете имат едни и същи възли в него и всеки 2 същите възли са свързани. проблемът е, че имам нужда от купчината, за да знам полетата на възела за heapify например, и не знам кой е правилният начин да го направя, приятели? публични полета в Node? писане на възела вътре в купчината? използване на гетери и сетери? благодаря на всички за помощта.


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 само в пространството на имената на детайлите thou. - person Viktor Sehr; 19.09.2010