结构向量分配错误?代码不工作

Faulty Allocation of Vector of Structures? Code not working

我的代码在标记点之后不工作。

#include<iostream>
#include<vector>
using namespace std;

struct node{
  int data;
  int level;
};
int main()
{
    node x;
    x.data=0;
    int j=0;
    int n;
    int strt,lv=1;
    cout<<"Enter No. of Nodes: ";
    cin>>n;
    vector<node> adj[n];
    int m,data,nb=0;
    while(j<n)
    {
        cout<<"Enter No. of Neighbours of "<<j<<": ";
        cin>>m;
        while(nb<m)
        {
            cin>>x.data;
            x.level=0;
            adj[j].push_back(x);
            nb++;
        }
        nb=0;
        j++;
    }
    vector<node>::iterator i;
    /*for(j=0;j<n;++j)
    {   
        cout<<j;
        for(i=adj[j].begin();i!=adj[j].end();i++)
        {
            cout<<"->"<<(*(i)).data;
        }
        cout<<endl;
    }*/
    node y,z;
    cout<<"Enter Starting Node: ";
    cin>>strt;    //This Point-*****************************
    cout<<"LOL";
    y.data=strt;
    y.level=0;
    vector<node> frontier;
    vector<node> next;
    frontier.push_back(y);
    while(!frontier.empty())
    {
        z=frontier.back();
        frontier.pop_back();
        //next.clear();
        for(i=adj[z.data].begin();i!=adj[z.data].end();i++)
        {
            if((*(i)).level==lv-1)
            {   (*(i)).level=lv;
                next.push_back((*(i)));
            }
        }
        frontier=next;
        lv++;
    }

    for(i=next.begin();i!=next.end();i++)
    {
        cout<<(*(i)).data<<" ";
    }
     return 0;
}

终端继续接受输入,就好像程序处于无限循环中一样 - 但它并没有陷入无限循环,因为即使在调试解释器代码时也没有执行 cout<<"LOL" 语句读取 cout<<"LOL" 并转到下一行。请帮助。

使用cout<<"LOL"<<endl;刷新输出。

相信调试器。如果转到下一行,则执行该语句。

由于您没有清除向量 next,因此您在最后 while 的每次迭代中将 next 保留在 frontier 循环。所以 frontier 永远不会为空。所以你的代码陷入无限循环。

之前把你的评论标志去掉就行了

next.clear();