c++ - Memset 一个 int(16 位)数组到 short 的最大值

标签 c++ c memset

似乎无法在任何地方找到这个问题的答案, 如何将数组 memset 为数组类型的最大值? 我原以为 memset(ZBUFFER,0xFFFF,size) 可以在 ZBUFFER 是 16 位整数数组的情况下工作。相反,我始终得到 -1。

此外,我们的想法是尽可能快地完成这项工作(它是一个需要初始化每一帧的 zbuffer)所以如果有更好的方法(并且仍然一样快或更快),请告诉我。

编辑: 作为澄清,我确实需要一个带符号的 int 数组。

最佳答案

C++ 中,您将使用 std::fill 和 std::numeric_limits。

#include <algorithm>
#include <iterator>
#include <limits>

template <typename IT>
void FillWithMax( IT first, IT last )
{
    typedef typename std::iterator_traits<IT>::value_type T;
    T const maxval = std::numeric_limits<T>::max();
    std::fill( first, last, maxval );
}

size_t const size=32;
short ZBUFFER[size];
FillWithMax( ZBUFFER, &ZBUFFER[0]+size );

这适用于任何类型。

C中,最好不要使用设置字节值的memset。要初始化除 char(ev.unsigned)以外的其他类型的数组,您必须求助于手动 for 循环。

关于c++ - Memset 一个 int(16 位)数组到 short 的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15947969/

相关文章:

c++ - 如何使用 `ListS` 而不是 `VecS` 作为底层容器并能够做同样的事情?

c++ - 为什么数组的大小作为常量变量在 C 中是不允许的,而在 C++ 中是允许的?

c - 让: ** NO targets specififed and no makefile found.停止

c++ - 清除 char 数组的最佳方案 - memset 与否?

c++ - 提升icl interval_map interval_set模板

c++ - 标准算法的并行实现和副作用

c++ - 我可以直接调用函数指针吗?

C:如果我们不知道长度,如何使用 fgets() 填充表格?

c - 如何在二维数组中使用 memset 函数来初始化 C 中的成员?

c++ - 使用 new 分配连续空间还是使用 vector ?