Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将一个向量复制到另一个向量的子向量而不分段?_C++_Vector_C++14 - Fatal编程技术网

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)
overall
memcpy
是这种东西的首选方法。而且
std::string
比vector更适合字节。但是您仍然可以使用
memcpy(&vect[0]+512,…)
#include <algorithm>  // Somewhere up above

::std::copy(chip.rom.begin(), chip.rom.end(), chip.memory.begin() + 512);