gpt4 book ai didi

c++从指针 vector 中删除

转载 作者:搜寻专家 更新时间:2023-10-31 01:48:40 25 4
gpt4 key购买 nike

我正在查看 Cinder 的 Box2D 模板中的代码,并想修改代码以便我可以将框从屏幕上移除以及添加它们。我是 C++ 的新手,但根据我从其他 SO 帖子中学到的知识,我正在尝试使用以下 if 情况从 vector 中删除框:

for( vector<b2Body*>::iterator boxIt = mBoxes.begin(); boxIt != mBoxes.end(); ++boxIt ) {
if( (*boxIt)->GetPosition().x > scaledX){
boxIt = mBoxes.erase(boxIt);
}
else {

Vec2f pos( (*boxIt)->GetPosition().x, (*boxIt)->GetPosition().y );
float t = toDegrees( (*boxIt)->GetAngle() );

glPushMatrix();
gl::translate( pos );
gl::rotate( t );

Rectf rect( -BOX_SIZE, -BOX_SIZE, BOX_SIZE, BOX_SIZE );
gl::drawSolidRect( rect );

glPopMatrix();
}

}

但是当“(*boxIt)->GetPosition().x”第二次执行时,这会导致访问崩溃。有什么想法吗?

最佳答案

删除后你不应该++boxIt。赋值已将您的迭代器移至下一项。

从 for 行中删除 ++boxIt 并将其仅放在 else 中。

关于c++从指针 vector 中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17478994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com