for (int i=0;i<matSize;i++)
{
if(condition[i]==1)
{
displacement.erase (displacement.begin()+i);
}
}
这个循环有什么问题?我正在尝试从满足条件的位移矢量中删除元素。我无法擦除循环工作。有人能帮助我吗?感谢。
答案 0 :(得分:0)
我会走出困境,假设这是C ++,你正在使用std :: vector。
假设向量中有5个元素。擦除一个,剩下多少?你接下来要检查哪一个,你会有多高?
更明确地说,假设它是
[0, 10, 20, 30, 40]
并且你要删除10和20.所以当i
为1时,你测试10并删除它;现在矢量是
[0, 20, 30, 40]
然后将i
增加到2,并检查30,完全错过了20 。当你迭代结束时(即i
为4时),你会遇到更大的麻烦。
解决方案很简单,您可以通过在一个小而简单的向量上尝试代码并查看正在测试和擦除的元素来发现所有这些。