使用 true 初始化布尔数组时出现问题

trouble Initializing Boolean array with true

本文关键字:问题 数组 true 初始化 布尔 使用      更新时间:2023-10-16

我试图了解如何初始化布尔数组,我尝试使用 memset 并且它有效,但是当我尝试直接初始化它时,我失败了。

bool prime[n+1] ;
memset(prime,true,sizeof(prime));

——这行得通。

但以下没有。

bool prime[n+1] = {1};
//memset(prime,true,sizeof(prime));

我也尝试了以下方法。

bool prime[n+1] = {1};

它确实初始化了你的数组。这就是大括号括起来的初始化的工作原理。第一个数组元素被初始化为1,这转换为true,所有其他元素被初始化为0,这转化为false。这:

bool v[10] = { 1 };

与您拥有的相同:

bool v[10] = { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 };

您可以使用 std::fill 函数和朋友:

std::fill(std::begin(v), std::end(v), true);
std::fill_n(v, 10, true);

像这样初始化一个数组:

bool foo[10] = {1};  // initialize only the first element to 1, the rest get 0.

您需要使用 memset 方法,否则在初始值设定项列表中提供 n 个值

bool foo[10] = {1,1,1,1,1,1,1,1,1,1};

或者使用 std::fill、循环或任何其他方法来设置所有值。