【发布时间】:2017-03-11 00:53:42
【问题描述】:
如果我正在经历一个循环,比如迭代一个向量,并且我不想对向量中的某个项目执行操作,我可以通过两种方式进行操作:
这是我更喜欢使用的一个:
vector<int> vec;
void loopFunction(int toIgnore) {
for (size_t index = 0; index < vec.size(); index++) {
if (vec[index] == toIgnore) continue;
// do stuff
}
}
这是我看到大多数人使用的:
vector<int> vec;
void loopFunction(int toIgnore) {
for (size_t index = 0; index < vec.size(); index++) {
if (vec[index] != toIgnore) {
// do stuff
}
}
}
我知道最终结果绝对没有区别。但是,由于第二种方式打开了一个新的执行范围,因此在幕后有什么区别吗?这两个中的任何一个比另一个更受欢迎吗?
谢谢
【问题讨论】:
-
就我个人而言,我尽量避免嵌入范围,因此我可以使用
continue进行第一个示例,这样循环中的所有内容都处于同一级别。不过,一切都与偏好有关。据我所知,两者都没有性能优势 -
我也更喜欢第一种方式。我也不喜欢代码中的嵌套范围。但是,添加新范围是否会增加开销?我认为它可能适用于大循环?
标签: c++ loops convention