我想初始化一个具有真值的bool类型的双维数组。
bool a[5][5] = {true}; //Well this won't work
fill(a,a+sizeof(a),true); // This throws an error too.
如何完成这项工作?
答案 0 :(得分:3)
bool a[5][5] {{true, true, true, true, true},
{true, true, true, true, true},
{true, true, true, true, true},
{true, true, true, true, true},
{true, true, true, true, true}};
正确,但很脆弱 - 当您在不更改true, true, true...
部分的情况下更改数组的大小时,将使用false
初始化添加的数组部分。
你最好只使用for循环来执行此操作:
bool a[5][5];
for (auto& r: a)
for (bool& b: r)
b = true;
或使用std::vector
:
std::vector<std::vector<bool> > a(5, {true, true, true, true, true});