bool vizitat[60][60];
...
if(/*some condition*/)
{
vizitat[n][m] = {0}; // set all the elements to `false`.
/*other code here*/
}
有没有一种方法可以将
vizitat
的每个元素设置为0,理想情况下没有显式循环? 最佳答案
由于vizitat
被声明为bool vizitat[60][60];
,
std::fill(
&vizitat[0][0]/*the first element*/,
&vizitat[0][0] + sizeof visitat / sizeof(bool) /*one after the last element*/,
false
);
会做到的。
这是因为数组中的数据是连续的。尽管编译器可能会对此进行优化,但是使用
std::memset
通常并不安全。请注意,如果按行分配内存,这种方法将行不通。有关更多详细信息,请参见How are multi-dimensional arrays formatted in memory?。