Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 当我在for循环中使用.size()时,我得到了错误的答案,但是当我之前将它赋给变量时,它就起作用了。为什么? while(!q.empty()) { 深度++; //int size=q.size(); for(int i=0;i_Loops - Fatal编程技术网

Loops 当我在for循环中使用.size()时,我得到了错误的答案,但是当我之前将它赋给变量时,它就起作用了。为什么? while(!q.empty()) { 深度++; //int size=q.size(); for(int i=0;i

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())

队列的大小在for循环中始终在变化

假设最初队列的大小为5

当您将此值存储在for循环之前的变量中时,保证循环根据循环的条件运行5次

但是如果我们在循环的条件下使用
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);
                }
                
            }