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?