我需要堆栈溢出的意见来解决我脑海中关于循环效率的问题。现在,当我开始编程时,“让它工作”是重中之重,我的大部分 for 循环看起来像这样。
for (int i = 0; i < N; i++) {;}
然后我很艰难,尤其是在 C++ 开发中,预递增可以为您节省一些调用,并且考虑到这将是 N 次调用并且它不会改变我养成的可读性习惯。
for (int i = 0; i < N; ++i) {;}
这在一段时间内已经足够好了,但关注的是可读性,在阅读了 Steve McConnell 的一些 Code Complete 之后,我得出了这个结论。
for (int loop_index = 0; loop_index < loop_count; ++loop_index) {;}
这些变量会根据代码的上下文而变化。然后我阅读了一些关于内置类型构造函数和赋值的 Effective C++。基本上就是区别
int i = 42;
和
int i(42);
是前者调用构造函数和赋值运算符,而后者只调用构造函数。所以我在编码时把它纳入了我的日常工作。所以我的问题是,这是编写 for 循环的最有效和可读的方式吗:
for (int loop_index(0); loop_index < loop_counter; ++loop_index) {;}
最佳答案
其实,
for (int i = 0; i < N; i++) {;}
很好。 i
是一个 int
,因此编译器无论如何都会优化后增量。使用 int i(42);
或 int i = 42;
初始化 int
也是一个品味问题。
我还会调用迭代器 i
,而不是 loop_index
。前者广为人知,后者则陌生。
但是,如果您处理的是迭代器,情况就会发生变化。很有可能 it++
仍会针对 ++it
进行优化,但在这里,我宁愿使用预增量。
关于c++ - for循环的效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11865628/