zw3*_*324 4 c c++ arrays memset
昨天我在C++中编写了一个包含循环和数组的小片段代码.在程序中,我需要在每次循环重启时重置数组.但是,如果我使用
memset(sum,sizeof(sum),0);
Run Code Online (Sandbox Code Playgroud)
然后数组不会重置为全0.对于这个程序我用过:
for (i=0;i<sizeof(sum)/sizeof(int);i++) sum[i]=0;
Run Code Online (Sandbox Code Playgroud)
代替.
但是,我认为循环并不像函数那样清晰,它需要一个额外的变量,更不用说这比memset()函数的魔法要宽一百万次了.你们能帮我们这个吗?
这是C++,所以用C++方式做fill_n.
std::fill_n(&sum[0], sizeof(sum) / sizeof(sum[0]), 0);
你memcpy没有工作的原因是因为,如其他答案所述,你交换了第二个和第三个参数.
编辑:fill并fill_n会在任何提供或可被视为输出迭代工作.对于标准容器,vector您可以预先调整容器大小,back_inserter也可以使用while数组,您可以使用我指定的表单.