c++ - 如何在不发生段错误的情况下将 vector 复制到另一个 vector 的子 vector ?

标签 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 是一个结构,其中 memory 和 rom 都是无符号字符的 vector

rom 是一个 160 字节的 vector ,它是我用来测试我的模拟器的游戏 rom。

memory 归零为 4096 字节,如下所示:

chip.memory = std::vector<BYTE>(4096);

经过调试,我设法发现我在这个 for 语句之后出现了段错误。我觉得我要疯了!我错过了什么明显的错误?

最佳答案

你没有初始化 i你的比较是错误的方向。此外,如果您使用 <为了便于比较,- 1如果您只是想避免跑完 chip.rom 的末尾,则没有必要.

你甚至根本不应该在这里使用循环。以下是代码应该如何阅读:

#include <algorithm>  // Somewhere up above

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

使用 <algorithm> 中的内容 header ,您不必记住在 for 中获取所有内容语句始终正确。不仅如此,您的编译器可能会生成更高效的代码。

关于c++ - 如何在不发生段错误的情况下将 vector 复制到另一个 vector 的子 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44600316/

相关文章:

c++ - Open-CV - 加载不正确

C++如何将来自stdio的输入字符串放入 vector 中,每个容器元素一个字

c++ - 如何获取 vector 中最小元素的索引?

java - 如何在 Java 中将 Vector<Object> 转换为 Vector<Object>?

c++ - 为什么 uint128_t 没有 uint128_t 的移位重载?

c++ - 不支持 vector 的 noexcept 要求

C++ STL算法等于

c++ - 当 mysql 数据库发生更新或更改时,我如何通知我的 C 或 C++ 应用程序

c++ - fprintf、字符串和 vector

c++ - 将 std::minmax 与一对进行比较