LBa*_*ish 1 c++ iterator c++14
我注意到,当else if在此代码中执行语句时destination,尽管没有被解除引用,但似乎被解释为它指向的实际值而不是迭代器.就像它被自动解除引用一样.该for循环执行你所期望的,但我还想done设置为true当begin()和end()迭代器都是平等的.destinations是一个整数的双端队列,是这个函数的全局.
void removeDestination(int destinationFloor)
{
bool done = false;
while(!done && !destinations.empty())
{
for (auto destination = destinations.begin(); destination != destinations.end(); ++destination)
{
if(*destination == destinationFloor)
{
destinations.erase(destination);
break;
}
else if(destination == destinations.end())
{
done = true;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助.
这个问题与destination虚假解除引用无关.该else if分支从来没有采取:
else if(destination == destinations.end())
Run Code Online (Sandbox Code Playgroud)
因为如果destination到达结尾destinations,那么循环条件:
for (auto destination = destinations.begin(); destination != destinations.end(); ++destination)
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)
else if在输入之前停止循环.
| 归档时间: |
|
| 查看次数: |
66 次 |
| 最近记录: |