【发布时间】:2016-07-30 02:44:56
【问题描述】:
我有一个动态创建的二维数组。
int **abc = new int*[rows];
for (uint32_t i = 0; i < rows; i++)
{
abc[i] = new int[cols];
}
我想用一些值(比如 1)填充数组。我可以遍历每个项目并做到这一点。
但是有没有更简单的方法。我正在尝试使用memset 和std::fill_n,如this post 中所述。
std::fill_n(abc, rows * cols, 1);
memset(abc, 1, rows * cols * sizeof(int));
使用 memset 会使我的程序崩溃。使用 fill_n 会产生编译错误。
invalid conversion from 'int' to 'int*' [-fpermissive]
我在这里做错了什么?
【问题讨论】:
-
退回到 C 可能是一种选择:
int (*abc)[cols] = malloc(rows*sizeof(*abc)); memset(abc, 1, rows*sizeof(*abc));自 C99 以来是合法的 C,但在 C++ 中不可能很快实现。
标签: c++ multidimensional-array dynamic-arrays memset