使用break
break
将打破它当前所在的任何重复或迭代循环。这个详细的图像指南旨在突出break
的行为,而不是说明良好的编码实践。内部 for 循环就足够了,但就像我说的,这是出于视觉目的:
替代建议
使用 Modern C++ 中可用的各种搜索算法<algorithm>
来搜索容器,并在某种程度上搜索字符串。这样做的原因有两个:
- 更短更易阅读的代码
- 通常和你自己写的任何东西一样快
这些代码示例将需要相同的样板,<algorithm>
但较旧的 for 循环搜索除外:
#include <vector>
#include <algorithm>
std::vector<int> int_container = { 10, 23, 10345, 432, 2356, 999, 1234, 0x45f };
bool has1234 = false;
现代方式是这样的,我们快速搜索容器,如果搜索迭代器不在容器的最后(不是最后一个元素),我们知道它正在搜索的值是位于。
对于用户编写的代码,此代码以更少的行数和更少的潜在故障点实现了相同的结果,就像它下面的旧替代方案一样。
现代 C++ 风格
auto search_position = std::find( int_container.begin(), int_container.end(), 1234 ) ;
if ( search_position != int_container.end() )
has1234 = true;
C++11 基于范围的 for 循环
for ( auto i : int_container )
{
if ( i == 1234 )
{
has1234 = true;
break;
}
}
老式 C 风格的 for 循环:
for ( int i = 0; i < int_container.size(); i++ )
{
if ( int_container[i] == 1234 )
{
has1234 = true;
break;
}
}