有可能吗?
像这样: while(itr!=list.end())
{
++itr; //is it ok?
}
而不是:
for(itr=list.begin();itr!=list.end();++itr)
我想这只是个人的好感但我更喜欢一点点。谢谢
答案 0 :(得分:1)
假设你在循环之前有一个itr=list.begin()
,那很好。
答案 1 :(得分:1)
for
- 风味循环:
for(init-stmt; test-expression; alter-stmt)
{
// code
}
相当于:
init-stmt;
while (test-expression)
{
//code
alter-stmt
}
如果你的init-stmt逻辑在你的while循环的前导码中与你的for循环相同,那么就不用担心了。在您的情况下,它将显示为:
itr = list.begin();
while (itr != list.end())
{
// code
++itr;
}
可变生命周期
值得注意的是init-stmt
中声明的变量的生命周期可以使这些变量不同。例如:
for (auto itr = list.begin(); itr != list.end(); ++itr)
{
// code
}
变量itr
在循环外没有生命周期。要使用等效的while
- 循环,需要使用范围包装的大括号:
{
auto itr = list.begin()
while (itr != list.end())
{
// code
++itr;
}
}
最后,正如其他人所建议的那样,也许一个远程循环结构可能更适合您的需求。如果有兴趣,您可以阅读更多相关信息here。