如何用C ++中的fill函数初始化双维布尔数组/ char数组?

时间:2015-07-26 11:20:12

标签: c++ c++11 c++-standard-library

我想初始化一个具有真值的bool类型的双维数组。

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

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

如何完成这项工作?

1 个答案:

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