c++ - 我应该如何从循环中跳出?

标签 c++ c performance break

<分区>

每当我需要从 for(unsigned int i=0;i<bound;++i) 中逃脱时C++ 中的表达式,我只是设置索引变量 i=bound ,与此 answer 中描述的方式相同.我倾向于避免 break声明,因为老实说,我不太了解它实际上的作用。

比较两条指令:

for(unsigned int i=0;i<bound;++i) {
    if (I need a break) {
    break;
    }
}

for(unsigned int i=0;i<bound;++i) {
    if (I need a break) {
    i=bound;
    }
}

我推测第二种方法会做一个额外的变量集,然后在 i 之间进行一次额外的比较。和 bound ,所以从性能的角度来看,它看起来更昂贵。那么问题是调用break是否更便宜? ,然后做这两个测试?编译后的二进制文件有什么不同吗?是否存在第二种方法失效的情况,或者我可以安全地选择这两种方法中的任何一种?


相关:Does `break` work only for `for`, `while`, `do-while`, `switch' and for `if` statements?

Breaking out of a loop without a break statement [C]

最佳答案

使用 break 将更具前瞻性和逻辑性。

考虑下面的例子,

for (i = 0; i < NUM_OF_ELEMENTS; i++)
{
     if(data[i] == expected_item)
         break;
} 

printf("\n Element %d is at index %d\n", expected_item, i);

但是第二种方法在这里没有用。

关于c++ - 我应该如何从循环中跳出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37053360/

相关文章:

c++ - 模板元编程与经典名称重载相结合

c++ - Cpp : JSON parser in Cpp that provide support Serialize/Deserialize feature, 将 JSON 对象转换为用户定义的类?

C++程序故障?

c - sscanf 格式和输出限额

java - 如何对从 HashMap 获得的字符串的 ArrayList 进行优先排序?

c++ - 虚函数的引用

c - 在枚举中定义

c - <dos.h> 头文件在代码块中工作吗?

python - 有效地从列表中删除重复项

python - Twisted:在 react 器过载的情况下优雅地降低性能?