如何在 C++ 中用填充函数初始化双维布尔 array/char 数组?

How to initialize a double dimensional boolean array/char array with fill function in C++?

我想初始化一个bool类型的二维数组,值为真。

bool a[5][5] = {true}; //Well this won't work

fill(a,a+sizeof(a),true); // This throws an error too. 

如何完成这项工作?

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