std::for_each
过for
循环有什么优点吗?对我来说,std::for_each
似乎只是阻碍了代码的可读性.为什么有些编码标准推荐使用?
我遇到了一组用于C++ 咆哮的幻灯片.这里和那里有一些有趣的花絮,但是幻灯片8对我来说很突出.其内容大约是:
不断变化的风格
旧的和破坏的:
Run Code Online (Sandbox Code Playgroud)for (int i = 0; i < n; i++)
新热度:
Run Code Online (Sandbox Code Playgroud)for (int i(0); i != n; ++i)
我之前从未见过for
使用第二种形式的循环,所以声称它是"新热"让我感兴趣.我可以看到它的一些基本原理:
!=
可能比硬件更快 <
++i
不需要编译器保持旧的值i
,这是i++
可以做的.我认为这是不成熟的优化,因为现代优化编译器会将两者编译成相同的指令; 如果有的话,后者更糟糕,因为它不是一个"正常" for
循环.使用!=
而不是<
对我来说也是可疑的,因为它使循环在语义上与原始版本不同,并且可能导致一些罕见但有趣的错误.
for
循环的"新热度"版本是否受欢迎?这些天是否有任何理由使用该版本(2016+),例如不寻常的循环变量类型?