我有一个简单的 for 循环:
for (int i = 0; i < c.numparticles; i++)
{
if ( labs((noncollision[i].getypos())) > 5000 )
{
noncollision.erase (noncollision.begin()+i);
}
}
noncollision
类的向量在哪里particle
。在此特定示例中,应擦除大于 5000noncollision
的任何内容。ypos
我一直在使用noncollision
6 的大小,其中 2的大小ypos
远远大于 5000。但是,这个 for 循环只是擦除其中一个,完全忽略另一个。我的怀疑是因为noncollision
是类的向量,所以这些类受到某种保护,或者导致数组函数的行为不同?这是我对noncollision
和 的声明particle
:
vector<particle> noncollision;
class particle{
private:
int xpos;
int ypos;
int xvel;
int yvel;
bool jc; // Has the particle just collided?
public:
etc....
};
谁能解释为什么会发生这种情况,以及如何纠正它?我是否需要为班级设置一个“擦除功能” particle
?