c++ - 循环检查约定

标签 c++ loops convention

如果我正在经历一个循环,比如迭代一个 vector ,并且我不想对 vector 中的某些项目执行操作,我可以通过两种方式进行:

这是我更喜欢使用的:

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 的第一个实现,以防止不必要的代码嵌套和范围创建。

除了要执行的正常代码之外,每个函数的唯一性能开销是对 if 语句 中表达式的求值。由于它们都包含要评估的表达式,因此它们在性能方面是相同的。

如果您考虑一下它是如何编译的,对于 C/C++,它会直接编译成汇编代码。在该级别上,无论您如何嵌套代码,它都会编译成简单的 jmpcmp 命令。因此,无论实现如何,在编译时,您都将拥有〜相同的汇编代码。

无论您怎么看,这都是微观-微观优化,如果有的话!按照您喜欢的方式设置代码格式和样式。

关于c++ - 循环检查约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42730076/

相关文章:

c++ - 关于函数返回指针

r - 如何在 r studio 中的多个 Excel 工作表上使用脚本

string - 为什么 Fluent NHibernate 始终从 C# 字符串属性创建一个文本字段作为默认值?

Python:循环动态变化的字典键名

python - 什么时候不应该在 Python 中使用 self 约定?

python - 我应该在哪里放置 Python 包的演示脚本?

c++ - OpenCV 中是否有类似 MATLAB 的 'impixelinfo()' 的功能?

c++ - sourceFile.open(文件路径);

c++ - 类 '' 没有名为 '' 的成员

php - MySQL 使用 Select 填充数组字符串