似乎在任何地方都找不到答案,
如何将数组设置为数组类型的最大值?
我本来以为memset(ZBUFFER,0xFFFF,size)在ZBUFFER是16位整数数组的情况下会起作用。相反,我得到-1s。

另外,我们的想法是使这项工作尽可能快(这是一个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循环。

10-08 13:14