Loops 当我在for循环中使用.size()时,我得到了错误的答案,但是当我之前将它赋给变量时,它就起作用了。为什么? while(!q.empty()) { 深度++; //int size=q.size(); for(int i=0;i
队列的大小在for循环中始终在变化 假设最初队列的大小为5 当您将此值存储在for循环之前的变量中时,保证循环根据循环的条件运行5次 但是如果我们在循环的条件下使用Loops 当我在for循环中使用.size()时,我得到了错误的答案,但是当我之前将它赋给变量时,它就起作用了。为什么? while(!q.empty()) { 深度++; //int size=q.size(); for(int i=0;i,loops,Loops,队列的大小在for循环中始终在变化 假设最初队列的大小为5 当您将此值存储在for循环之前的变量中时,保证循环根据循环的条件运行5次 但是如果我们在循环的条件下使用q.size(),它将不能保证运行5次。因为在循环中,队列的大小总是在变化。要么因为当前节点没有子节点而减小,要么因为当前节点有2个或更多子节点而增大 比方说,在5个节点中,前4个没有任何子节点。在这种情况下,for循环将迭代3次,然后终止。但是如果我们使用size变量,它将迭代5次 while(!q.empty())
q.size()
,它将不能保证运行5次。因为在循环中,队列的大小总是在变化。要么因为当前节点没有子节点而减小,要么因为当前节点有2个或更多子节点而增大
比方说,在5个节点中,前4个没有任何子节点。在这种情况下,for循环将迭代3次,然后终止。但是如果我们使用size
变量,它将迭代5次
while(!q.empty())
{
depth++;
//int size = q.size();
for(int i = 0; i<q.size;i++)
{
cout << q.size();
auto currNode = q.front();
q.pop();
for(auto n: currNode->children)
{
if(n)
q.push(n);
}
}