gpt4 book ai didi

c++ - boost::ptr_vector<>::iterator 是否可以循环使用 while?

转载 作者:行者123 更新时间:2023-11-28 02:43:50 25 4
gpt4 key购买 nike

这可能吗?

像这样:

    while(itr!=list.end())
{

++itr; //is it ok?
}

代替:

for(itr=list.begin();itr!=list.end();++itr)

我想这只是个人喜好,但我更喜欢多一点。谢谢

最佳答案

一个 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 .

关于c++ - boost::ptr_vector<>::iterator 是否可以循环使用 while?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25064981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com