【问题标题】:Vector of struct with constructor带有构造函数的结构向量
【发布时间】:2014-06-11 09:47:31
【问题描述】:

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

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,或 (graphNodes(1.f, 1.f, 0))(N),但没有成功。不幸的是,我无法在其他地方找到任何类似的示例。提前致谢。

【问题讨论】:

    标签: c++ vector struct


    【解决方案1】:

    您不能将构造函数参数“转发”到向量的构造函数。而是这样做:

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

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

    【讨论】:

      【解决方案2】:

      您可能正在寻找

      std::vector<Node> graphNodes(N, Node(1.f, 1.f, 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);
        

        【讨论】:

          【解决方案4】:

          你可以这样做:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2022-01-22
            • 2011-03-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-06-30
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多