通过memset函数将2D int数组元素设置为1

时间:2013-06-13 04:40:39

标签: c++ 2d memset

在c ++中,我们通常使用memset将所有元素设置为零,如:

int a[5][5];
memset(a,0,sizeof(a));

如果我想将所有int元素设置为 1

,该怎么办?
memset(a, 1, sizeof(a));

不起作用,因为我不能将所有字节都设置为 1

我想知道是否有与memset类似的功能来将所有elements NOT JUST BYTES )设置为特定的value

1 个答案:

答案 0 :(得分:1)

使用std::fill会有效,但您必须使用reinterpret_cast<>,这通常被视为不良形式:

#include <algorithm>

int a[5][5];
std::fill(reinterpret_cast<int*>(a),
          reinterpret_cast<int*>(a)+(5*5),
          1);

或者,您可以获取第一个元素的地址,这同样是笨重的:

std::fill(&a[0][0],&a[0][0]+(5*5),1);