声明一个值为
回答
我通常使用for循环来初始化所有值。据我所知,你只能通过列表进行初始化,而不是所有元素的默认值。
我认为Luna正在尝试这样做:http://stackoverflow.com/questions/629017/ – coelhudo 2012-07-17 14:08:54
是的,我试图做这个问题一样,并使用循环将使程序运行较慢 – 2012-07-17 14:12:41
在每个维度使用std::fill
:
for (int i = 0; i < 100; ++i)
std::fill (mines[i], mines[i] + 100, '0');
还是在C++ 11:
for (auto &chars : mines)
std::fill (std::begin (chars), std::end (chars), '0');
更容易,使用的事实,阵列是连续的,你可以保存自己的循环:
std::fill (mines, mines + 100*100, '0');
为了消除那里的幻数,正如Shahbaz指出的那样,将mines + 100*100
与sizeof(mines)
。
你只会初始化做
char mines[100][100] = {'0'};
其余的第一要素将使用0
进行初始化(值不是字符),您将需要一个循环。像这样:
int row, column;
for (row = 0; row < 100; row++)
for (column = 0; column < 100; column++)
mines[row][column] = '0';
Luna,这被称为零初始化器,只能将所有值初始化为零对应的值:空指针,零。如果你尝试将char初始化为0,它将起作用,但其他任何值都不会。
更多信息here。
#include <iostream>
int main(int argc, char *argv[])
{
int value[2][2] = {0};
for(int i = 0; i < 2; ++i)
for (int j = 0; j < 2; ++j)
std::cout << (value[i][j] == 0) << std::endl;
return 0;
}
输出:
如果您需要一个特定的值进行初始化,在我看来Luchian与memset的最佳解决方案。
我不确定你想问什么。你是否试图将矿井阵列的每个成员设置为0,或者你是否试图将第100个元素的第100个成员设置为0? – alexy13 2012-07-17 14:06:17
以这种方式使用的初始化列表将专门设置所有包含的值,不包含的所有内容都将初始化为0. – Chad 2012-07-17 14:09:54