我试图了解如何初始化布尔数组,我尝试使用 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、循环或任何其他方法来设置所有值。