结构传染媒介与建设者的

时间:2014-04-25 15:26:35

标签: c++ vector struct

我已经阅读了一些关于结构和向量的内容,我最终编写了以下Node结构:

struct Node{
  float posx;
  float posy;
  int accessibility;

  Node() :
    posx(0.f), posy(0.f), accessibility(0) {}

  Node(float x, float y, int access) :
    posx(x), posy(y), accessibility(access) {}

};

然后在主要我想创建节点的一些实例,我使用:

Node sampleNode(1.f, 1.f, 0);

std::vector<Node> graphNodes(N);

他们工作正常,好吧。但是,如果我想使用第二个构造函数创建维度N的向量,该怎么办?因为我尝试了几种组合(如 std :: vector&lt;(Node(1.f,1.f,0))&gt; (graphNodes(1) .f,1.f,0))(N),但没有成功。不幸的是,我无法在其他地方找到任何类似的例子。提前致谢。

4 个答案:

答案 0 :(得分:3)

有一个std::vector constructor,第一个参数用于元素数量,第二个参数用于设置元素的值:

std::vector<Node> graphNodes(N, Node(1.0f, 1.0f, 0));

这将创建一个大小为N的向量,其中包含Node(1.0f, 1.0f, 0)

的副本

请注意,您还可以传递Node的现有实例:

std::vector<Node> graphNodes(N, sampleNode);

答案 1 :(得分:2)

你不能&#34;转发&#34;向量构造函数的构造函数参数。相反,这样做:

std::vector<Node> graphNodes(N, Node(1.f, 1.f, 0));

向量的构造函数的第二个参数被复制N次以填充向量。

答案 2 :(得分:2)

您可能正在寻找

std::vector<Node> graphNodes(N, Node(1.f, 1.f, 0));

答案 3 :(得分:2)

你可以这样做:

std::vector<Node> graphNodes(N, sampleNode);