如何轻松将“双数据类型”的第二个数组元素初始化为-1或0[重复]
Posted
技术标签:
【中文标题】如何轻松将“双数据类型”的第二个数组元素初始化为-1或0[重复]【英文标题】:How can I initialize 2nd array elements which are 'double data type' as -1 or 0 easily [duplicate] 【发布时间】:2016-07-15 05:58:10 【问题描述】:我想轻松地将双第二个数组元素初始化为 -1 或 0。
如果是整数,我们可以这样写
int cache[100][100];
memset(cache, -1, 100*100*sizeof(int));
但是如果是双精度,我怎样才能轻松地初始化这个第二个数组?我能处理的最好的方法,但很丑,在下面
double cache[100][100];
for(int i=0; i<100; i++)
for(int j=0; j<100; j++)
cache[i][j] = -1;
有人知道这方面的最佳解决方案吗?
【问题讨论】:
您确定整数版本符合您的预期吗?memset
用一致的字节填充内存区域,而不是 int。第 2 版更清楚地表明了您真正想要实现的目标。
版本 1 表示二进制补码
我知道你的意思。因此,'memset'可以填充一个内存区域-1或0。我想知道的是有一定的STL可以实现上述目标。
@LưuVĩnhPhúc 不确定它是否重复,因为该答案并没有真正解决 2D 数组(或者如果确实如此,我看起来不够努力 ;-)
【参考方案1】:
将数组的元素初始化为0
很简单。
double cache[100][100] = ;
将它们初始化为-1
并不容易。您必须将整个数组写成:
double cache[100][100] = -1, repeat 10000 times;
您可以使用以下方法将它们设置为-1
:
std::fill(cache[0], cache[0]+100*100, -1);
【讨论】:
太棒了!这就是我想知道的以上是关于如何轻松将“双数据类型”的第二个数组元素初始化为-1或0[重复]的主要内容,如果未能解决你的问题,请参考以下文章
为啥只有数组的第一个元素被初始化为-1?而其余的都是0 [重复]