如何写模板?

时间:2010-09-19 11:03:40

标签: c++ templates heap

我需要编写一个模板,其中的节点包含具有2个数据结构的数据:一个映射和一个最小堆,两者都有相同的节点,每两个相同的节点都连接在一起。 问题是我需要堆知道heapify的节点字段,例如,我不知道什么是正确的方法,朋友们? Node中的公共字段?在堆中写入Node?使用getter和setter? 谢谢大家的帮助。

1 个答案:

答案 0 :(得分: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    
};
}

没有特别的理由从用户或LinkedList类隐藏Node结构(将它放入详细命名空间应该绰绰有余):LinkedList需要它并且Node本身对用户来说几乎没用。所有封装都取决于LinkedList来实现:它不应该给出它的头部(或任何其他Node*)。