Loops 从满足条件向量的向量中删除元素 >(int i=0;i < p>我将走到一个肢体上,假设这是C++,并且您使用的是STD::vector。< /P>

Loops 从满足条件向量的向量中删除元素 >(int i=0;i < p>我将走到一个肢体上,假设这是C++,并且您使用的是STD::vector。< /P>,loops,vector,physics,Loops,Vector,Physics,假设向量中有5个元素。删除一个元素后,还剩下多少?下一步你会检查哪一个,你会数到多少 更明确地说,假设是 for (int i=0;i<matSize;i++) { if(condition[i]==1) { displacement.erase (displacement.begin()+i); } } 你想擦除10和20,所以当i为1时,你测试10并擦除它,现在向量为 [0, 10, 20, 30, 40] 然后您将i增加到2,并检查30,因

假设向量中有5个元素。删除一个元素后,还剩下多少?下一步你会检查哪一个,你会数到多少

更明确地说,假设是

for (int i=0;i<matSize;i++) 
{

    if(condition[i]==1)
    {
    displacement.erase (displacement.begin()+i);
    }

 }
你想擦除10和20,所以当
i
为1时,你测试10并擦除它,现在向量为

[0, 10, 20, 30, 40]
然后您将
i
增加到2,并检查30,因为您完全错过了20个。当您迭代到结束时(即
i
为4),您将遇到更大的麻烦


解决方案很简单,您可以通过在一个小而简单的向量上尝试您的代码并查看您正在测试和删除哪些元素来发现所有这些。

这是什么语言?涉及的变量声明为什么?结果是什么(预期/实际)?阅读stackoverflow手册
[0, 20, 30, 40]