std::vector<int> someVector;
for (unsigned int i = 0; i < someVector.size(); i++)
{
// do something
}
每次都会计算
someVector.size()
的值吗? 最佳答案
可能,取决于循环的内容和许多其他事情。例如,可以在循环内修改 vector 的大小。那么您的编译器必须能够发现情况是否并非如此。因此,必须满足一些条件才能对此进行优化。
如果您要求 std::vector::size()
只在循环中调用一次,那么最好(也是唯一)的策略是通过对代码进行微不足道的修改来完全回避这个问题:
std::vector<int> someVector;
for (unsigned int i = 0, length = someVector.size(); i < length; ++i)
{
// do something
}
关于c++ - 优化 "for"循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16747036/