我只想将整个数组设置为0,就像一个“重置”方法。
我知道我可以使用以下方式将数组初始化为零:
int array[100] = {0}; //possible since c++11
但我不确定该如何重置它。类似于array[100] = {0};
只会将第100个元素设置为0。我知道我可以用for循环来做,但一定有更好的方法。
由于编码指南的限制,我不能使用memset。
std::fill
:std::fill(std::begin(array), std::end(array), 0);
对于像int array[100]
这样的C风格数组,只要array
是一个数组,就可以使用std::fill
。指向数组的指针将不起作用。
std::fill(std::begin(array), std::end(array), 0);
如果你正在使用指向第一个元素的指针,你必须自己提供数组的大小。
std::fill(array, array + size, 0);
在C++中,推荐使用std::array
代替C风格的数组。例如,你可以使用std::array<int, 100> foo;
来代替int foo[100];
。 std::array
总是知道自己的大小,不会隐式地衰减为指针,并且具有值语义。通过使用std::array
,你可以简单地重置数组:
foo.fill(0);
或者foo = {};
std::array
或std::vector
。 - Slavastd::array
是你的好朋友。它是一个更安全的数组。它只是一个普通的内置数组,因此没有内存分配开销。 - Nikos C.char strArray [] ="Hello world";
! - Gem Taylor