c++ - 通过 memset 函数将 2D int 数组元素设置为 1

标签 c++ 2d memset

在c++中,我们通常使用memset将所有元素设置为零,如:

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

如果我想将所有 int 元素设置为 1 怎么办?

memset(a, 1, sizeof(a));

不起作用,因为我不能将所有字节都设置为 1

我想知道是否有类似memset 的函数来将所有元素(NOT JUST BYTES) 设置为特定的.

最佳答案

使用 std::fill会工作,但你必须求助于使用 reinterpret_cast<> ,这通常被认为是错误的形式:

#include <algorithm>

int a[5][5];
std::fill(reinterpret_cast<int*>(a),
          reinterpret_cast<int*>(a)+(5*5),
          1);

或者,您可以获取第一个元素的地址,这同样很笨重:

std::fill(&a[0][0],&a[0][0]+(5*5),1);

关于c++ - 通过 memset 函数将 2D int 数组元素设置为 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17079379/

相关文章:

c++ - 分析一个简单的单周期长度操作

c++ - 如何使用 AudioQueue 在 C++ 中为 Mac OSX 播放声音

c++ - 用户将元素输入二维 vector C++

java - 在二维数组网格中从一个单元格到另一个单元格绘制线条

java - 读取 .txt 文件并存储在二维字符数组 java

c - 指针错误。一元 * 的类型参数无效

c++ - SDL_TTF 渲染错误的地方

java - 如何用双缓冲在Java中显示Pacman的张嘴/闭嘴动画?

c++ - 如何使用没有运行时库的 VC++ 内部函数

c++ - Memcpy 可读范围