似乎无法在任何地方找到这个问题的答案,
如何将数组 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/