【问题标题】:How to write a template?如何编写模板?
【发布时间】:2011-04-14 07:26:49
【问题描述】:

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

【问题讨论】:

标签: c++ templates heap


【解决方案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*)。

【讨论】:

  • 你应该只将类 Node 放在你的详细命名空间中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-09
  • 2016-06-17
  • 2014-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多