【发布时间】:2018-11-30 22:48:09
【问题描述】:
我正在尝试用零填充 3d 数组,以使用 std::fill“重置”数组中的所有元素。
对于二维数组,使用std::fill 函数可以正常工作,如下所示:
float histogram2D[28][28] = {{0}};
//give the array some values here then trying to reset it with zeros.....
fill( &histogram2D[0][0], &histogram2D[0][0] + sizeof(histogram2D), 0 );
尝试使用 std::fill 函数用零填充 3d 数组不起作用,我收到错误:分段错误(核心转储)
float histogram3D[28][28][28] = {{{0}}};
//give the array some values here then trying to reset it with zeros.....
fill( &histogram3D[0][0][0], &histogram3D[0][0][0] + sizeof(histogram3D), 0 );
如果std::fill 函数甚至可以用于 3d 数组,有人知道如何使用它吗?
【问题讨论】:
-
我的c++版本不支持这样的数组初始化。但这不是我的问题。当给我的 histogram3D 值时,我想用 std::fill 函数将其“重置”为零,但它不起作用。
-
你的指针算法是错误的。第二个参数应该是
&histogram3D[0][0][0] + sizeof(histogram3D) / sizeof(histogram3D[0][0][0])。 -
@rpress 哦,当然谢谢。感谢您的帮助:)。
标签: c++ arrays algorithm c++11 multidimensional-array