Woj*_*tek 2 c++ iterator std stdvector
我有这段代码:
for (std::vector<Marker>::iterator it = markers.begin(); it != markers.end(); ++it) {
if (it->getDots().size() < 3) {
markers.erase(it);
}
}
Run Code Online (Sandbox Code Playgroud)
在其中一个测试输入(应用程序进行图像分析)中,我得到了一个段错误.我试图调试代码(无济于事)并注意到一件事.当问gdb p markers.size()我收到$9 = 3.所以我希望循环迭代三次,但令人惊讶的是它(至少)完成了5次.在第五次迭代中有一个段错误.我还注意到,导致错误的不是*it(这里it->)的解引用.具体来说it->getDots(),这是一个简单的吸气剂.
我很少用C++编写,所以它可能是一个简单的错误,但我的调试和谷歌搜索都没有带来任何解决方案.你能帮忙吗?
我想强调的是,在各种不同的输入(略有不同的图像)上,这个功能正常工作,所以我更难以追踪到这个错误.
| 归档时间: |
|
| 查看次数: |
90 次 |
| 最近记录: |