我有这个运行时错误:
我使用这段代码(这是最小的可重现示例代码;它在此之前说了一些其他内容。基本上,在此之前,列表是一个名为
Vector2f
的snakeSegments
列表(SFML),我将setter函数替换为现在 int1(曾经是一个叫做 RectangleShape
的 head
)只有 int int1
,我也为 int int2
做了同样的事情。这基本上只是最后一个代码块的 mre 版本,它没有'有你需要更多东西才能工作的东西):
int main()
{
std::list<int> integers;
int int1 = 10;
integers.push_back(int1);
int int2 = 20;
integers.push_front(int2);
//...
if (!integers.empty())
{
for (auto it = std::next(integers.begin()); it != integers.end(); ++it)
{
if (it != integers.begin() && int1 == *it)
{
int1 = 15;
integers.erase(std::next(integers.begin(), 1));
integers.push_front(int1);
//...
}
}
for (auto it = std::next(integers.begin()); it != integers.end(); ++it)
{
if (it != integers.begin() && int1 == *it)
{
std::cout << *it << std::endl;
}
}
}
return 0;
}
我得到未定义的行为
我试着查看 next() 函数的代码,希望弄清楚问题是否可以通过使用不同的容器(如双端队列或其他容器)来解决(比如问题是我无法使用递增列表++,所以我可以使用其他一些容器,它可以通过 ++ 递增来工作。我不认为我可以。)但这似乎不起作用。
除此之外我没有尝试太多。