这是“for”的等同“替换”吗?

时间:2017-12-30 22:45:52

标签: c++

假设我们已经定义了一个没有限制的类T,并且有三个函数condnextf返回boolvoid和分别是

for(T k = T(); cond(); next())
    f();

{
T k = T();

while(cond()) {
    f();
    next();
}
}

从算法上讲呢?

2 个答案:

答案 0 :(得分:1)

绝对。 for (init; cond; step) {statements}语法等同于

{
    init;
    while (cond) {
        statements;
        step;
    }
}

所以它们完全可以互换(除了在某些情况下的可读性)。

第一行和最后一行中独立括号的目的是将初始化变量的范围限制为循环本身。

答案 1 :(得分:0)

因为在这两种情况下你已经初始化了类对象然后检查条件,然后下一步要遵循相同的位置,它们在算法和执行方面的工作方式类似,因为FOR和WHILE都是可互换的。