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

标签 c++ copy

我想用“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/

相关文章:

c++ - 谁能解释一下为什么两个 "results"不同?

iPhone 通过代码将某些内容复制到剪贴板

c++ - 我可以隐式创建一个可简单复制的类型吗

c# - 将目录复制到输出目录 - 控制台应用程序 .NET

networking - 需要一个批处理文件从网络驱动器复制到我的本地系统

file - 具有相同上次修改日期的常规副本文件

c++ - 是否有可以在 iOS 上运行的本地键值存储数据库(与 Redis 不同)?

c++ - 结构体之外的函数定义 C++

c++ - 为什么 timer_create 在 solaris 10 中为 SIGEV_THREAD 抛出错误?

C++-builder : access violation 0x0000002c in window. cpp