在 C++ 中,如果需要使用 break 语句,'while' 循环是否优先于 'for' 循环?
In C++, if need to use a break statement, is 'while' loop preferred over 'for' loop?
我相信性能几乎是一样的。但是使用 while 循环对于代码可读性 and/or 可维护性有什么好处吗?
当您不知道容器的大小时,'While' 很方便。例如,如果您需要遍历一个列表。
从技术上讲,for
和 while
循环结构是可以互换的。一个可以解决的问题,另一个也可以解决。
但是,他们向代码的人 reader 发送了不同的消息。
for
语句表示 "we will do this a predetermined number of times" 而 while
语句表示 "we don't know how often we are going to do this. We will do it until we got what we want".
永远记住,如果可能的话,您的代码应该第一眼就清楚易懂。在此基础上,我个人的意见是(按重要性降序排列):
- If
break
-ing 跳出循环或在循环外使用循环计数器变量的内容总是对此写一些评论。
- 如果您在团队中编写代码,请尝试模仿他们的风格(如果合适)。查看编码指南是否到位。
- 使用
while(true){...if(...)break;...}
构建无限循环,因为它看起来比 for(;;){...if(...)break;...}
或 for(;true;){...if(...)break;...}
更专业。
- 如果您意识到有关循环退出或递增计数器(或迭代器)的语句将被放置在内部循环体中——甚至可能多次——使用
while
以避免任何略过您的代码的人会相信循环仅由其头部控制。考虑到您的代码的潜在 reader 可能不熟悉您注释的语言,因此代码必须自己说话。
- 在适当的时候使用 C++11 基于范围的
for
循环。
我相信性能几乎是一样的。但是使用 while 循环对于代码可读性 and/or 可维护性有什么好处吗?
'While' 很方便。例如,如果您需要遍历一个列表。
从技术上讲,for
和 while
循环结构是可以互换的。一个可以解决的问题,另一个也可以解决。
但是,他们向代码的人 reader 发送了不同的消息。
for
语句表示 "we will do this a predetermined number of times" 而 while
语句表示 "we don't know how often we are going to do this. We will do it until we got what we want".
永远记住,如果可能的话,您的代码应该第一眼就清楚易懂。在此基础上,我个人的意见是(按重要性降序排列):
- If
break
-ing 跳出循环或在循环外使用循环计数器变量的内容总是对此写一些评论。 - 如果您在团队中编写代码,请尝试模仿他们的风格(如果合适)。查看编码指南是否到位。
- 使用
while(true){...if(...)break;...}
构建无限循环,因为它看起来比for(;;){...if(...)break;...}
或for(;true;){...if(...)break;...}
更专业。 - 如果您意识到有关循环退出或递增计数器(或迭代器)的语句将被放置在内部循环体中——甚至可能多次——使用
while
以避免任何略过您的代码的人会相信循环仅由其头部控制。考虑到您的代码的潜在 reader 可能不熟悉您注释的语言,因此代码必须自己说话。 - 在适当的时候使用 C++11 基于范围的
for
循环。