我有一些看起来像这样的代码:
for (int = i; i > (chip.rom.size() - 1); i++) {
//int i = 0;
chip.memory[i + 512] = chip.rom[i];
//i++;
}
chip
是一个结构,其中memory和rom都是无符号字符的向量
rom
是一个160字节的向量,这是我用来测试我的模拟器的游戏。
memory
归零为4096字节,如下所示:
chip.memory = std::vector<BYTE>(4096);
经过调试,我设法发现我之后发生了故障。我觉得我疯了!我错过了什么明显的错误?
答案 0 :(得分:3)
您没有初始化i
并且您的比较方向错误。此外,如果您使用<
进行比较,如果您只是想避免在- 1
结束时使用chip.rom
,则不需要#include <algorithm> // Somewhere up above
::std::copy(chip.rom.begin(), chip.rom.end(), chip.memory.begin() + 512);
。
你甚至不应该在这里使用循环。以下是代码应该如何阅读:
<algorithm>
使用for
标题中的内容,您无需记住让db.inventory.find( { item: /^j/ }, { 'size.h': 1 } )
语句中的所有内容始终正确无误。不仅如此,您的编译器可能会生成更高效的代码。