我已经阅读了一些关于结构和向量的内容,我最终编写了以下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),但没有成功。不幸的是,我无法在其他地方找到任何类似的例子。提前致谢。
答案 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);