【问题标题】:Passing a Vector of a Vector with variables to a function将带有变量的向量的向量传递给函数
【发布时间】:2014-11-04 20:15:54
【问题描述】:

我试图创建一个包含大小变量的数组(即数组[x][y]),但这是行不通的。我偶然发现了一篇建议使用向量的向量的帖子:

vector<vector<int> > grid(GetGridXComponent(), vector<int>(GetGridYComponent()));

GetGridXComponent() 和 GetGridYComponent() 从类中检索私有变量。

代码在函数内部工作,但我需要能够在类外部访问向量“网格”。为此,我尝试创建一个公共实例:

vector<vector<int> > grid(GetGridXComponent(), vector<int>(GetGridYComponent()));

当然,GetGridXComponent() 和 GetGridYComponent() 不起作用,因为它认为我正在创建一个函数并希望我为 GetGridXComponent() 声明一个类型。

有没有办法解决这个问题?我是否让它变得比需要的更难? 提前致谢。

Class Simulator
{
  private:
    int s_iGridXComponent;
    int s_iGridYComponent;
  public:
    Simulator();
    ~Simulator();
    int GetGridXComponent();
    int GetGridYComponent();
    void Function(vector<vector<int> >&);
  vector<vector<int> > pelletGrid(GetGridXComponent(), vector<int>(GetGridYComponent()));
}

void Simulator::Function(vector<vector<int> > &grid)
{
  code;
}

【问题讨论】:

    标签: c++ vector pass-by-reference


    【解决方案1】:

    假设您只是想创建一个名为 pelletGrid 的类成员,它是一个 2D 向量,它应该是这样的:

    class Simulator
    {
        private:
            int s_iGridXComponent;
            int s_iGridYComponent;
            std::vector<std::vector<int>> pelletGrid;
    
        public:
            Simulator(const int x, const int y) : 
                    s_iGridXComponent(x), 
                    s_iGridYComponent(y), 
                    pelletGrid(x, std::vector<int>(y)) 
            { }
    
            void CreateGrid (const int x, const int y)
            {
                s_iGridXComponent = x;
                s_iGridYComponent = y;
    
                pelletGrid = std::vector<std::vector<int>>(x, std::vector<int>(y));
            }
    
    };
    

    您可以使用构造函数或自定义方法来初始化二维向量,具体取决于您何时知道 X/Y 维度。

    【讨论】:

      猜你喜欢
      • 2015-08-07
      • 2011-06-21
      • 2013-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-02
      • 1970-01-01
      相关资源
      最近更新 更多