带有unsized向量的图形实现C ++

时间:2013-03-13 13:21:28

标签: c++ list graph vector

所以,我正在尝试制作矢量图。 问题是,我不知道向量的大小,它是作为输入给我的。 我正在考虑制作一个节点:

typedef struct node{
   my_vector v[];
   node * next;
}

我可以创建一个带有向量my_vector v[];的向量的节点吗?我是c ++的新手

另外,我真的不知道如何实现图表,但它与实现列表不同吗?

2 个答案:

答案 0 :(得分:0)

你可以这样做:

template<typename T>
struct node{
   std::vector<T> v;
   node * next;
}

现在您可以创建包含任何类型数据的node,如下所示:

node<int> myintnode;
node<double> mydoublenode;

答案 1 :(得分:0)

  

我可以使用向量my_vector v [];

创建一个带有向量的节点

如果您需要在运行时确定矢量大小,则不能使用此类声明。您必须自己分配内存,甚至更好,使用std::vector

  

另外,我真的不知道如何实现图表,但它与实现列表不同吗?

列表是一个非常简单的图表,因此存在一些理论相似之处。在实践中,实现方式不同,取决于您将对图表执行的操作。有许多方法可以实现图形,并且有许多书籍和图书馆可以处理这个主题。我建议研究简单图形实现的数据结构的任何介绍。例如,Adjacency ListsAdjacency Matrix是一些最常见的图表表示。还有graph library in Boost,但它可能是一种过度杀伤。