nwa*_*lsh 0 c++ performance for-loop
例如,
int i = 0;
for( ; i < 5; ++i )
{
doStuff();
}
Run Code Online (Sandbox Code Playgroud)
与
for( int i = 0; i < 5; ++i )
{
doStuff();
}
Run Code Online (Sandbox Code Playgroud)
我见过第一个方法的唯一一次是要初始化的变量是一个非常长的命名迭代器.有什么表现明智可以使一个更有益吗?或者仅仅是选择和可读性?
您可能这样做的一个原因是因为您需要在循环结束后知道迭代器/索引的值.这对你的例子来说并没有多大意义,因为你知道它的价值5,但有时你事先并不知道.考虑:
int i = 0;
for(; isStillOkay(i); ++i )
{
doStuff();
}
// now we can use the final value of i for something
Run Code Online (Sandbox Code Playgroud)
通常,您必须执行此操作的唯一原因是确保迭代器/索引在封闭范围内可用.如果您不需要,您所做的只是污染该范围.与往常一样,建议是为所有对象提供必要的最小范围.
如果你有很长的类型,我建议你用它auto来推断你的类型.如果您没有C++ 11支持,我建议使用以下格式:
for (std::some::very_long<type>::name iterator_name = some_big_initializer;
iterator_name < complicated && condition != iterator_name;
++iterator_name)
{
// ...
}
Run Code Online (Sandbox Code Playgroud)