我看到很多c ++代码看起来像这样:
for( const_iterator it = list.begin(),
const_iterator ite = list.end();
it != ite; ++it)
Run Code Online (Sandbox Code Playgroud)
与更简洁的版本相反:
for( const_iterator it = list.begin();
it != list.end(); ++it)
Run Code Online (Sandbox Code Playgroud)
这两个约定之间的速度会有什么不同吗?由于list.end()只被调用一次,因此第一个会稍快一些.但由于迭代器是const,似乎编译器会将此测试从循环中拉出来,为两者生成等效的汇编.
c++ compiler-construction optimization iterator coding-style