如何将二维数组的所有元素初始化为特定值?

5

是否有类似于 memset() 的函数可以将二维数组中的所有元素初始化为特定值?memset 仅能用于将值初始化为0-1


6
std::fill 怎么样? - cigien
1
"由于memset只能将值初始化为0和-1" - 你从哪里得到的?memset()可以很好地将某些东西设置为42或任何其他值。但是,std::fill可能仍然是您想要的。 - Jesper Juhl
1
@JesperJuhl 部分属实。 memset 将传递的值转换为 unsigned char,因此只能使用这些值。例如,您无法将整数数组初始化为 INT_MAX(除非 INT_MAX == SCHAR_MAX)。 - NathanOliver
我更喜欢使用向量的向量来存储值,因为它的初始化非常容易:std::vector<std::vector<int>> v(M, std::vector<int>(N, C)); // 声明一个大小为MxN且填充了C的矩阵 - brc-dd
2个回答

3
你可以使用std::fill
for(auto &arr : two_dim)
    std::fill(std::begin(arr), std::end(arr), value);

这将适用于许多数组和容器,例如 std::vectorstd::array 和 C 数组。
另外请注意,您可以使用 memset 将数组的所有元素初始化为除 -10 之外的值。只是每个元素中的所有字节都具有相同的值,例如 0x12121212

0
这里有一个fill()函数,可以用特定的值初始化2D数组。
#include <iostream>
#include <algorithm>

int a[row][column], value;
std::fill(a[0], a[0] + row * column, value);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接