有人可以向我解释为什么这段代码不起作用,我该如何解决呢? 谢谢
int main()
{
int gridSize;
cout<<"please enter the grid size: ";
cin>>gridSize;
int gridArray[gridSize][gridSize];
}
答案 0 :(得分:3)
使用std::vector<int>(rows * cols)
甚至std::vector<std::vector<int>>()
。它不起作用,因为C ++不支持VLA。即将出台的技术规范中将提供std::dynarray
。
答案 1 :(得分:2)
std::vector
是这样做的有利方式,但如果你只是想知道如何手动操作:
int main()
{
int gridSize;
std::cout << "Enter size of grid: ";
std::cin >> gridSize;
int** gridArray = new int*[gridSize];
for (int i = 0; i < gridSize; i++)
{
std::cout << std::endl << i << std::endl;
gridArray[i] = new int[gridSize];
}
}
基本上,您使用指针数组,然后设置第二维。但是如果你做这样的事情,你必须手动delete
内存以避免泄漏。 同样,这种方式不建议,仅为专有技术提供
Parashift's C++ FAQ是一个很好的资源。
答案 2 :(得分:0)
class Table
{
public:
Table(int rows, int cols)
{
tab_.resize(rows);
for (auto& row : tab_)
{
row.resize(cols);
}
}
vector<int>& operator[](int row) { return tab_[row]; }
private:
vector<vector<int> > tab_;
};