私は単純な for ループを持っています:
for (int i = 0; i < c.numparticles; i++)
{
if ( labs((noncollision[i].getypos())) > 5000 )
{
noncollision.erase (noncollision.begin()+i);
}
}
はclassnoncollision
のベクトルですparticle
。この特定の例でnoncollision
は、ypos
5000 を超えるものはすべて消去する必要があります。noncollision
私は6のサイズで作業しており、そのうち2つはypos
5000をはるかに超えています。私の疑いは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
クラスに「消去機能」を設定する必要がありますか?