我对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);
}
}
}
答案 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));