C ++如何初始化和填充类的二维向量

时间:2018-11-11 03:39:20

标签: c++

我对c ++还是很陌生,试图弄清楚如何使用vector的语法。 说我要根据输入初始化并填充2D向量

Cell {
    int x, y;
public:
    Cell(){};
    ....
};

Grid {
    vector<vector<Cell>> theGrid;

public:
    void init(int n);
};

这有什么问题

void Grid::init(int n){
    for (int i = 0; i < n; ++i){
        for (int j = 0; j < n; ++j){
            Cell c;
            theGrid.[i].emplace_back(c);
        }
    }
}

2 个答案:

答案 0 :(得分:0)

您在那里遇到了几个问题:语法错误,超出范围,使用循环而不是STL功能。

void Grid::init(int n){
    theGrid = std::vector<vector<Cell>>(n, std::vector<Cell>(n, Cell()));
}

答案 1 :(得分:0)

关于您的代码:

theGrid.[i].emplace_back(c);

这里您有一个“ .[i].”,因此是语法错误...。因此,我们必须正确编写语法,其结果是:

theGrid[i].emplace_back(c);

或:

theGrid.at(i).emplace_back(c);

您甚至不需要 来做...只需使用向量的构造函数即可:

theGrid = std::vector<std::vector<Cell>>(n, std::vector<Cell>(n));