小编use*_*240的帖子

嵌套if语句和"&&"运算符

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语句一样工作吗?

c++ if-statement nested operator-keyword

7
推荐指数
1
解决办法
1565
查看次数

在这种情况下如何擦除矢量元素?

我做了一个游戏,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);它没有任何问题.但代码看起来很脏.有没有其他方法可以轻松擦除当前元素

c++ iterator vector

2
推荐指数
1
解决办法
369
查看次数

标签 统计

c++ ×2

if-statement ×1

iterator ×1

nested ×1

operator-keyword ×1

vector ×1