似乎在任何地方都找不到答案,
如何将数组设置为数组类型的最大值?
我本来以为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
循环。