C++ 如何将一个向量复制到另一个向量的子向量而不分段?
我有一些代码如下所示:C++ 如何将一个向量复制到另一个向量的子向量而不分段?,c++,vector,c++14,C++,Vector,C++14,我有一些代码如下所示: for (int = i; i > (chip.rom.size() - 1); i++) { //int i = 0; chip.memory[i + 512] = chip.rom[i]; //i++; } chip是一种结构,其中内存和rom都是无符号字符的向量 rom是一个160字节的向量,这是我用来测试模拟器的游戏rom 内存归零为4096字节,如下所示: chip.memory = std::vecto
for (int = i; i > (chip.rom.size() - 1); i++) {
//int i = 0;
chip.memory[i + 512] = chip.rom[i];
//i++;
}
chip
是一种结构,其中内存和rom都是无符号字符的向量
rom
是一个160字节的向量,这是我用来测试模拟器的游戏rom
内存
归零为4096字节,如下所示:
chip.memory = std::vector<BYTE>(4096);
chip.memory=std::vector(4096);
在调试之后,我设法发现在这个for语句之后我是seg错误。我觉得我快疯了!我遗漏了什么明显的错误?您没有初始化
I
,并且您的比较方向错误。另外,如果使用欢迎使用堆栈溢出。请花点时间浏览,并参考中关于您可以在此处询问什么和如何提问的材料。特别重要的是发布一个。你不需要初始化iOk,谢谢你的链接@索佩尔,谢谢。我真不敢相信我错过了。尽管我的第二个向量chip.memory没有改变(它仍然被调零)。更好的方法是使用.assign(first,last)
@АчСааччаOP想要写入到一个现有的位置,而不是有两个相同的向量eah它应该是.insert(其中,first,last)
overallmemcpy
是这种东西的首选方法。而且std::string
比vector更适合字节。但是您仍然可以使用memcpy(&vect[0]+512,…)
#include <algorithm> // Somewhere up above
::std::copy(chip.rom.begin(), chip.rom.end(), chip.memory.begin() + 512);