我有一个std::array
的二维std::array
,我想用0填充它。我发现的唯一解决方案是使用指向第一个元素和sizeof
的指针,如下所示:
std::fill(&arr2d[0][0], &arr2d[0][0] + sizeof(arr2d), 0);
尽管它可以工作,但它与我发现的无指针逻辑填充1D
std::array
的其他方法并不一致,例如以下两种:std::fill(arr1d.begin(), arr1d.end(), 0);
arr1d.fill(0);
我可以遍历每个数组,如下所示:
for (auto& it : arr2d) {
it.fill(0);
}
但是一次填充数组似乎会更有效率。是否有用于2D数组的更清洁的方法,还是我受C风格的指针逻辑困扰?
最佳答案
在您的情况下,只需使用{}
分配(或初始化)即可:
using arr2d_t = std::array<std::array<unsigned char, 32>, 64>;
arr2d_t arr2d = {}; // all zeroes
arr2d = {}; //ditto