使二维数组中的所有元素成为C ++中某些非零值的快速方法

宗洋

假设我要为2d数组中的所有元素分配5。首先我尝试了memset

int a[3][4];
memset(a, 5, sizeof a);

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

但是结果是一样的all the elements becomes 84215045

然后我尝试使用fill_n,它显示积聚失败。看来fill_n不能与二维数组。

那么,有没有一种快速的方法可以将2d数组中的所有元素设置为某个值?在C ++中?

********************************************************************************
UPDATE

感谢@paddy的答案。其实fill_n做的工作。我使用它的方式就像这样,无法通过我的编译器建立。

fill_n(a,3*4,5);

@paddy的答案是正确的,我们可以通过这种方式将其用于二维数组。

fill_n(a[0],3*4,5); 

然后我尝试了更多,我发现我们实际上可以使用它来处理3d数组,但是应该像这样。说吧a[3][4][5]

fill_n(a[0][0],3*4*5,5); 
稻田

不幸的是,memset仅在将每个字节设置为一个值时有用但这在您要设置字节组时不起作用。由于2D数组的内存布局,实际上可以使用第一个值std::fill_nstd::fill从第一个值开始:

std::fill_n( a[0], 3 * 4, 5 );
std::fill( a[0], a[3], 5 );  // Note a[3] is one past the end of array.

取决于您的编译器,类似的东西甚至可能被矢量化以更快地执行。但是即使没有这些,您也不必担心速度-速度std::fill足够快。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使二维数组中所有元素的快速方法在C ++中变为某些非零值

来自分类Dev

在numpy二维数组中获取与零相邻的所有元素的索引

来自分类Dev

如何更改二维数组中的所有值?

来自分类Dev

如何在python中按切片获取二维数组的所有元素

来自分类Dev

向下移动二维数组中的所有元素

来自分类Dev

向下移动二维数组中的所有元素

来自分类Dev

如何列出二维数组中遍历元素的所有可能组合?

来自分类Dev

按列索引移动二维数组中的所有元素

来自分类Dev

检查二维数组中的所有元素是否相等(Ruby)

来自分类Dev

计算二维数组中的所有数字

来自分类Dev

计算二维数组中的所有数字

来自分类Dev

将大型二维数组初始化为 C++ 中的所有值

来自分类Dev

交换长度不同的二维数组中的元素c

来自分类Dev

如何使二维数组的每个元素成为python中的对象?

来自分类Dev

二维数组中的元素总数

来自分类Dev

从二维数组中检索元素

来自分类Dev

二维数组中的元素丢失?

来自分类Dev

置换二维数组中的元素

来自分类Dev

c中带有char指针的二维数组

来自分类Dev

快速找到二维数组中的最大元素

来自分类Dev

如何快速从二维数组中删除特定元素

来自分类Dev

打印二维数组中的某些元素

来自分类Dev

打印二维数组中的某些元素

来自分类Dev

C中的二维数组错误

来自分类Dev

在C中返回二维数组?

来自分类Dev

在C中返回二维数组

来自分类Dev

反转C ++中的二维数组

来自分类Dev

在C中释放二维数组

来自分类Dev

在C中打印二维数组