最近我一直在尝试更新一些代码以利用标准 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);
我期望这会以与我尝试替换的代码类似的方式运行:
memcpy(szBuffer,&vData[0],sizeof(int)*vData.size());
但是调试代码,很明显std::copy
我写的代码只是写入unsigned char
缓冲区的前4个字节,而不是向量中4个整数的完整位模式。有人可以告诉我我做错了什么,还是只是我不能std::copy
以这种方式使用并且应该坚持使用memcpy
?