我想用“std :: copy”替换我的“memcpy”,但我无法找到传递参数的正确方法。C++将memcpy转换为std :: copy
我的旧的memcpy代码为
memcpy(&uFeatures.Features[0], &((char*)(m_pData))[iBytePos],iByteCount);
我试着用的std ::复制各种事情,但他们都没有工作。
请问有人可以帮忙吗?
我想用“std :: copy”替换我的“memcpy”,但我无法找到传递参数的正确方法。C++将memcpy转换为std :: copy
我的旧的memcpy代码为
memcpy(&uFeatures.Features[0], &((char*)(m_pData))[iBytePos],iByteCount);
我试着用的std ::复制各种事情,但他们都没有工作。
请问有人可以帮忙吗?
从你的语法看来它会像这样的味道。 (假设功能[0]是char *,如果不是你需要投(查看评论))
std::copy(&uFeatures.Features[0], &uFeatures.Features[0]+iByteCount, &((char*)(m_pData))[iBytePos])
,正如我在您的意见看
我想,让编译器决定什么它喜欢(存储器复制, 的memmove或其他任何东西),这就是为什么我要使用std ::复制
std::copy
不会被编译器转换为memcpy
。他们是无关的。复制将做类似this
while (first != last) {
*d_first++ = *first++;
}
'uFeatures.Features'和'm_pData'类型是什么?另外,你为什么要改成'std :: copy'的原因是什么?你尝试过什么“各种各样的事情”? – Sven 2013-05-11 15:59:11
哇 - 看着那个后不得不洗去我的眼睛! – 2013-05-11 15:59:50
如果你的代码看起来像这样,我看不出有什么理由不使用memcpy。 – yngccc 2013-05-11 16:07:06