声明一个大小未知的多维数组

时间:2014-01-12 13:52:02

标签: c++ arrays multidimensional-array

有人可以向我解释为什么这段代码不起作用,我该如何解决呢? 谢谢

int main()
    {
    int gridSize;
    cout<<"please enter the grid size: ";
    cin>>gridSize;
    int gridArray[gridSize][gridSize];   
  }

3 个答案:

答案 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内存以避免泄漏。 同样,这种方式不建议,仅为专有技术提供

对于任何新的/中等程度的c ++程序员来说,

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