玩弄争论

Ant*_*nio 7 c++

灵感来自于此.

假设我们有一个非空的std::vector<T> v; 是否有任何区别

for (int i = v.size() - 1; i >= 0; i--) {
///Stuff.
}
Run Code Online (Sandbox Code Playgroud)

和:

for (int i = v.size(); i--; ) {
///Stuff.
}
Run Code Online (Sandbox Code Playgroud)

我的意思是,出于可读性考虑,我不会这样做,但是谁知道生活中有用的东西......

(这里只是一个测试,看它们是等价的)

编辑:要点是i向后访问向量的索引(在索引优于迭代器的情况下)

编辑2:出于好奇:他们最终得到的汇编代码略有不同.看到这个这个.

Ole*_*siy 2

这是一种合法的做法,但i--在 for 循环中用作条件在可读性方面是一个糟糕的主意。

for 循环由 3 部分组成 - 为什么让人们生活得更艰难?

如果你坚持传统的for循环,阅读你的代码的人会很高兴:

for (int i = v.size() - 1; i >= 0; i--) {
    ///Stuff.
}
Run Code Online (Sandbox Code Playgroud)