【发布时间】:2017-12-15 14:17:48
【问题描述】:
我只是想将一个完整的数组设置回 0。类似于“重置”方法。
我知道我可以使用类似的方法将数组初始化为零:
int array[100] = {0}; //possible since c++11
但我不确定是否重置它。 array[100] = {0}; 之类的东西只将 100 个元素设置为 0。我知道我可以使用 for 循环来做到这一点,但必须有更好的方法。
由于编码准则的原因,我不允许使用 memset。
【问题讨论】:
-
使用
std::array或std::vector -
"Something like array[100] = {0}; only set the 100-element to 0" 不,不是,那是UB它可以做任何事情。
-
你给出的例子其实是原版C,而原版C中对数组的帮助很少,除了memset。将模板包裹在你的 memset 周围是否可以接受?
-
@GemTaylor 遗憾的是它不是。真的吗?我认为数组初始化是自 c++11 以来的一部分,在 c 中是不可能的。我可能在这里错了。
-
std::array是你的朋友。这是一个更安全的数组。它只是一个普通的内置数组,因此没有内存分配开销。