我有这段代码:
for (std::vector<Marker>::iterator it = markers.begin(); it != markers.end(); ++it) {
if (it->getDots().size() < 3) {
markers.erase(it);
}
}
在其中一个测试输入(应用程序进行图像分析)中,我得到了一个段错误。我试图调试代码(无济于事)并注意到一件事。当要求 gdbp markers.size()
我收到$9 = 3
. 所以我希望循环迭代 3 次,但令人惊讶的是它(至少)做了 5 次。在第五次迭代中有一个段错误。我还注意到,导致错误的不是*it
(here ) 的取消引用。it->
具体来说it->getDots()
,这是一个简单的吸气剂。
我很少用 C++ 编写,所以这可能是一些简单的错误,但我的调试和谷歌搜索都没有带来任何解决方案。你能帮忙吗?
我想强调的是,在各种不同的输入(略有不同的图像)上,此功能可以正常工作,因此我更难以追踪错误。