while 循环不等于 std::queue 大小
While loop not equaling std::queue size
我有这个代码:
std::queue<unsigned int> offsets;
// (fill offsets here)
DEBUG(std::to_string(offsets.size())) // print offsets.size() to console
int iterations = 0;
while (!offsets.empty())
{
iterations++;
unsigned int currOffset = offsets.front();
offsets.pop();
if (currOffset == 0)
{
DEBUG("breaking from while loop")
break;
}
// do something with currOffset
}
DEBUG(std::to_string(iterations))
出于某种原因,iterations
永远不会等于 offsets.size()
。我不确定这是为什么。在我的测试应用程序中,offsets.size() == 28
,但 iterations == 11
。我在这个应用程序中只从 while 循环中断一次。
知道为什么会这样吗?非常感谢帮助。
因为第 11 个偏移量为零并且条件中断在循环到达数据结构末尾之前触发?
或者 // do something with currOffset
涉及从队列中弹出更多内容。
如果 front() == 0,则 if 中断循环,不需要为空。
while (!offsets.empty())
{
iterations++;
unsigned int currOffset = offsets.front();
offsets.pop();
if (currOffset == 0) // *** Here is the problem ***
{
DEBUG("breaking from while loop")
break;
}
// do something with currOffset
}
我有这个代码:
std::queue<unsigned int> offsets;
// (fill offsets here)
DEBUG(std::to_string(offsets.size())) // print offsets.size() to console
int iterations = 0;
while (!offsets.empty())
{
iterations++;
unsigned int currOffset = offsets.front();
offsets.pop();
if (currOffset == 0)
{
DEBUG("breaking from while loop")
break;
}
// do something with currOffset
}
DEBUG(std::to_string(iterations))
出于某种原因,iterations
永远不会等于 offsets.size()
。我不确定这是为什么。在我的测试应用程序中,offsets.size() == 28
,但 iterations == 11
。我在这个应用程序中只从 while 循环中断一次。
知道为什么会这样吗?非常感谢帮助。
因为第 11 个偏移量为零并且条件中断在循环到达数据结构末尾之前触发?
或者 // do something with currOffset
涉及从队列中弹出更多内容。
如果 front() == 0,则 if 中断循环,不需要为空。
while (!offsets.empty())
{
iterations++;
unsigned int currOffset = offsets.front();
offsets.pop();
if (currOffset == 0) // *** Here is the problem ***
{
DEBUG("breaking from while loop")
break;
}
// do something with currOffset
}