c++ - 在 C++ 中用 for(;condition;) 替换 while(condition) 有什么理由吗?

标签 c++ loops for-loop while-loop

看起来像

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/

相关文章:

c - 如何从数组列表的中间删除一个字符?

javascript - 对象不维护分配的值

PHP mySQL - 如何仅打印共享共同名称的两个事物的不同属性?

java - 我如何将这个 for every 转换为 for 循环?

C++11 : Why array with shared_ptr can not be deleted by default

c++ - 游戏引擎设计问题

c++ - Ubuntu - 在 CLion 中调试以代码 127 退出

python - 为什么这个列表理解比 Python 中使用 for 循环进行条件初始化慢?

r - 组合 R 中每列和组的数据框中的所有数据

C++11 Lambda 问题