我试图了解如何初始化bool数组,我尝试使用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};
答案 0 :(得分:4)
它会初始化您的数组。 brace-enclosed initialization就是这样工作的。第一个数组元素初始化为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);
答案 1 :(得分:1)
像这样初始化数组:
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,循环或其他任何方式设置所有值。