将带有变量的矢量向量传递给函数

时间:2014-11-04 20:15:54

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

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

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

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

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

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;
}

1 个答案:

答案 0 :(得分:0)

假设您只是想创建一个名为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));
        }

};

您可以使用构造函数或自定义方法来初始化2D矢量,具体取决于您何时知道X / Y尺寸。