在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
。
答案 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);