c++ - 是否可以将 std::fill 与二维 C 样式数组一起使用?

标签 c++

<分区>

假设我有:unsigned char my2darray[A][B];

是否可以使用 std::fill 将二维数组的所有值设置为非 0 值?

我知道可以使用 vector ,但这是性能关键代码,我无法承受动态分配。不幸的是,不允许使用 C++11。

目前在代码中使用的是memset(my2darray, 0x12, sizeof(my2darray)); 但是我想用std::fill 替换所有的memset 如果可能,因为数组的类型将来可能成为一个类。

感谢适用于任何类型(而不仅仅是字符)的答案。

最佳答案

是的,因为二维数组仍然是一系列元素,这些元素被分配为连续的内存块。

    std::fill (
      &my2darray[0][0],
      &my2darray[0][0] + sizeof(my2darray) / sizeof(my2darray[0][0]),
      none_zero_value);

关于c++ - 是否可以将 std::fill 与二维 C 样式数组一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25158380/

相关文章:

c++ - 调用远程设置 EAX 和 ECX 的函数

c++ - 如何使用 C++ 实现 fastcgi 身份验证?

c++ - 帮助处理 C++ STL 映射和运算符重载

c++ - 哪个运算符重载已用于 ifstream 对象以评估为 bool 值

c++ - 将成员函数作为参数传递给函数模板

c++ - valgrind:内存泄漏(不匹配的 free()/delete/delete[] )

c++ - 将文档添加到 Lucene 索引会导致崩溃

c++ - 分配新堆栈时的编程错误

c++ - 确定大于 4GB 的文件的大小

c++ - 这个 rsAssert 宏的含义是什么?