关于c ++中数组的问题

dat*_*ili 0 c++

像这样的int java声明的数组 int a[][]=new int[3][3]工作,但在c ++中不是为什么?请帮帮我,我已经很久没用过c ++所以请帮帮我

Mar*_*k B 8

在C++中你只想说int a[3][3];.C++不要求使用new声明所有数组和对象.

编辑:对于动态大小,n您不能使用基于堆栈的数组.

可能最好的方法是矢量矢量:

std::vector<std::vector<int> > a;
a.resize(n);
for(int i = 0; i < n; ++i)
{
    a[i].resize(n);
}
Run Code Online (Sandbox Code Playgroud)


Jer*_*fin 5

一般来说,你应该避免在C++中使用数组.虽然有特殊情况他们(几乎)是唯一的选择,但您的首选通常应该是使用std::vector替代品.在这种情况下,你想要的东西变得相当简单:

// vector of 3 ints, each initialized to 0
std::vector<int> init(3, 0);   

// vector of three vectors of int, each initialized to the value of 'init':
std::vector<std::vector<int> > a(3, init);
Run Code Online (Sandbox Code Playgroud)

  • @ereOn虽然我会像你一样建议避免数组,但是可以使用指向数组的指针,就好像它是迭代器所需的迭代器一样. (2认同)