C++ Memcpy C++;可供替代的

C++ Memcpy C++;可供替代的,c++,input,sdl-2,C++,Input,Sdl 2,我将Windows10上的库与MSVC(又名.visualc++)编译器一起用于个人项目。我在处理输入时遇到问题。 代码如下,其来源为: < P>我想不使用MeMCPY将CurrutkB数据复制到PREVKB,也可能使用一个更“C++友好”(C++中的C但不在C中工作)和安全的方式。< /P> < P>因为指针是RandomAccessIterator,并且您有可用的连续元素的数量,您可以使用I/P P> 或者使用移动分配:(最终可能不会有什么不同) 由于指针是RandomAccessItera

我将Windows10上的库与MSVC(又名.visualc++)编译器一起用于个人项目。我在处理输入时遇到问题。 代码如下,其来源为:


< P>我想不使用MeMCPY将CurrutkB数据复制到PREVKB,也可能使用一个更“C++友好”(C++中的C但不在C中工作)和安全的方式。< /P> < P>因为指针是RandomAccessIterator,并且您有可用的连续元素的数量,您可以使用I/P P> 或者使用移动分配:(最终可能不会有什么不同)


由于指针是RandomAccessIterator,并且您有足够数量的可用连续元素,因此可以使用以下的InputIterator:

或者使用移动分配:(最终可能不会有什么不同)


也许最简单的更改是使用或代替
memcpy
。它们是类型安全的,并且具有简单的可复制数据类型,它们可能会编译为
memcpy
memmove
调用,并从这些高度优化的函数中获得速度优势

std::copy(currentkb, currentkb + keylength, prevkb);


也许最简单的更改是使用或代替
memcpy
。它们是类型安全的,并且具有简单的可复制数据类型,它们可能会编译为
memcpy
memmove
调用,并从这些高度优化的函数中获得速度优势

std::copy(currentkb, currentkb + keylength, prevkb);


使用
std::vector
及其
assign
函数:使用
std::vector
及其
assign
函数:这里的
currentkb
的声明似乎有冲突——也许其中一些应该是
prevkb
?这里的
currentkb
的声明可能有冲突其中一些应该是
prevkb
const auto * const currentkb = SDL_GetKeyboardState(&keyLength);
std::vector<std::uint8_t> prevkb(currentkb, currentkb + keyLength);
prevkb.assign(currentkb, currentkb + keyLength);
prevkb = decltype(prevkb)(currentkb, currentkb + keyLength);
std::copy(currentkb, currentkb + keylength, prevkb);
std::copy_n(currentkb, keylength, prevkb);