gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 18:03:00 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com