看起来像
while( condition ) {
//do stuff
}
完全等同于
for( ; condition; ) {
//do stuff
}
是否有任何理由使用后者而不是前者?
最佳答案
据我所知,没有好的理由。您使用不增加任何内容的 for 循环是故意误导人们。
更新:
根据 OP 对问题的评论,我可以推测您如何在实际代码中看到这样的结构。我以前见过(并使用过)这个:
lots::of::namespaces::container::iterator iter = foo.begin();
for (; iter != foo.end(); ++iter)
{
// do stuff
}
但这就是我将要离开的 for 循环的范围。也许您的项目曾经有一个看起来像那样的循环。如果您在循环中间添加删除容器元素的代码,您可能必须仔细控制 iter
的递增方式。这可能导致代码看起来像这样:
for (; iter != foo.end(); )
{
// do stuff
if (condition)
{
iter = foo.erase(iter);
}
else
{
++iter;
}
}
但是,这不能成为不花五秒钟将其更改为 while 循环的借口。
关于c++ - 在 C++ 中用 for(;condition;) 替换 while(condition) 有什么理由吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1379246/