我想用“std::copy”替换我的“memcpy”,但我找不到传递参数的正确方法。
我的旧 memcpy 代码是
memcpy(&uFeatures.Features[0], &((char*)(m_pData))[iBytePos],iByteCount);
我用 std::copy 尝试了各种方法,但都没有用。
有人能帮忙吗?
最佳答案
从你的语法来看,它似乎是这样的。 (假设 Features[0] 是 char*,如果不是你需要转换(检查评论))
std::copy(&uFeatures.Features[0], &uFeatures.Features[0]+iByteCount, &((char*)(m_pData))[iBytePos])
正如我在您的评论中看到的
I would like to let the compiler decide what it prefers (memcopy, memmove or anything else), that is why I want to use std::copy
std::copy
不会被编译器翻译成 memcpy
。他们是无关的。 copy 会做类似 this 的事情
while (first != last) {
*d_first++ = *first++;
}
关于C++ 将 memcpy 转换为 std::copy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16499054/