if(a() && b() && c() && d())
doSomething();
if(a())
if(b())
if(c())
if(d())
doSomething();
Run Code Online (Sandbox Code Playgroud)
这两者之间是否存在"任何"性能差异?
例如,在a()变为0的情况下,它是否会在第一个if语句中继续运行b(),c()和d()?或者它会与第二个嵌套的if语句一样工作吗?
我做了一个游戏,rambo射击子弹和子弹击中了僵尸,我想从僵尸矢量中删除被击中的僵尸.
这个嵌套循环逐个检查每个僵尸和子弹之间的冲突.它有效一段时间,但当我开始杀死更多时,它会崩溃,因为它想要使用已删除僵尸的功能.
for ( it = zombies.begin(); it != zombies.end(); ++it ) {
it->attack();
for (rambo.it = rambo.bullets.begin(); rambo.it != rambo.bullets.end(); ++rambo.it) {
if(checkBasicCollision(it,rambo.it) && it != zombies.end()){
zombies.erase(it);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我现在更好地添加it--;了zombies.erase(it);作品,但它有时仍会崩溃.
我认为它的发生就像,例如有5个僵尸和20个子弹,僵尸迭代器是第二个僵尸,第二个僵尸开始子弹循环来检查它是否被击中.循环开始,让第三个子弹击中僵尸,但循环仍在进行,即使僵尸被删除,它仍然继续循环.
我加了休息; 之后zombies.erase(it);它没有任何问题.但代码看起来很脏.有没有其他方法可以轻松擦除当前元素