C ++将memcpy转换为std :: copy

时间:2013-05-11 15:57:23

标签: c++ copy

我想用“std :: copy”替换我的“memcpy”,但我找不到传递args的正确方法。

我的旧memcpy代码是

memcpy(&uFeatures.Features[0], &((char*)(m_pData))[iBytePos],iByteCount);

我用std :: copy尝试了各种各样的东西,但它们都没有用。

请问有人帮忙吗?

1 个答案:

答案 0 :(得分:1)

从你的语法

看来它会像这样。 (假设Features [0]是char *,如果不是,则需要强制转换(检查注释))

std::copy(&uFeatures.Features[0], &uFeatures.Features[0]+iByteCount, &((char*)(m_pData))[iBytePos])

正如我在你的评论中看到的那样

  

我想让编译器决定它喜欢什么(memcopy,   memmove或其他任何东西),这就是我想使用std :: copy

的原因

std::copy将不会被编译器翻译为memcpy。他们是无关的。复制将执行this

之类的操作
while (first != last) {
    *d_first++ = *first++;
}