用零初始化多维数组

Bla*_*ack 5 c++

在 C++ 中,您可以使用如下代码用 0 初始化一维数组:

int myarray[100] = {0};
Run Code Online (Sandbox Code Playgroud)

多维数组有类似的方法吗?还是我被迫用 for 循环手动初始化它?

mzi*_*ard 14

你完全一样

int marr[10][10] = {0};
Run Code Online (Sandbox Code Playgroud)

编辑:

这是一个 C 解决方案。对于 C++ 解决方案,您可以选择:

int marr[10][10] = {};
Run Code Online (Sandbox Code Playgroud)

这两种解决方案不适用于通过变量定义大小的数组。例如:

int i, j = 10;
int marr[i][j];
Run Code Online (Sandbox Code Playgroud)

要在 C++ 中初始化这样的数组,请使用std::fill.

  • @EdwardBlack,您必须为数组使用非常量大小。像 `const int N = 10; 一样使用它 int myarray[N][N] = {0};` (2认同)
  • @mziccard 不!停止为此任务广告`memset`!虽然它在这种特殊情况下有效,但存在太多陷阱。这是 C++,不是 C。使用 `std::fill`。 (2认同)

Che*_*Alf 6

多维数组是数组的数组。

相同的通用数组初始化语法适用。

顺便说一句,您可以只写{},无需在其中放置显式0


whi*_*hky 5

使用向量而不是数组,它将为您在声明和任何其他操作中提供更大的灵活性

vector<vector<int> > myarray(rows,vector<int>(columns, initial_value));
Run Code Online (Sandbox Code Playgroud)

您可以像访问数组一样访问它们,

如果你仍然想使用数组然后使用std::fill