我可以使用std :: copy将数据的位模式从整数向量复制到unsigned char数组

mat*_*975 1 c++ copy vector std memcpy

最近我一直在尝试更新一些代码以利用标准的C++库函数而不是旧的C风格函数.特别是,我试图做以下(简单的人工工作示例 - 我知道代码很丑,但它简洁地说明了问题):

std::vector<int> vData;
vData.push_back(10990);
vData.push_back(11990);
vData.push_back(12990);
vData.push_back(13990);

unsigned char szBuffer[100];
memset(szBuffer,0,sizeof(szBuffer));

std::copy(vData.begin(),vData.end(),szBuffer);
Run Code Online (Sandbox Code Playgroud)

我原以为这会像我想要替换的代码一样:

memcpy(szBuffer,&vData[0],sizeof(int)*vData.size());
Run Code Online (Sandbox Code Playgroud)

但是调试代码很明显,std::copy我编写的代码只是写入unsigned char缓冲区的前4个字节而不是向量中4个整数的完整位模式.有人可以告诉我我做错了什么,或者只是我不能std::copy以这种方式使用并且应该坚持下去memcpy

joh*_*ohn 5

坚持memcpy,std::copy智能,它了解所涉及的类型,并正确转换intunsigned char使用标准转换.memcpy是无知的,这就是你想要的.