-1

私はで使用std::vector::push_backしてfor-loopおり、if条件を追加した瞬間にエラーが発生し始めます。

if(p>0) a[p]->vec.push_back(i)

whereaは特にベクトルを含む構造体です。

エラーは条件に依存していないようです。

struct link
{
    vector<int>children;  
    int noOfchildren;  
     struct link * parent;  
}
typedef struck link * node;




for(i=1;i<=n;i++)
    {
            a[i]=(node)malloc(sizeof(element));
            scanf("%d",&p);
            a[i]->parent=a[p];
            a[i]->noOfchildren=0;
            if(p>0)
            a[p]->children.push_back(i);

    }  

a[0] は以前に初期化されています。

4

1 に答える 1

4

で初期化されていないメモリを割り当てていますmalloc。そのため、childrenも初期化されていません。それを呼び出すpush_backのはUBです。

を使用しa[i] = new link();ます。

于 2013-09-09T19:07:31.023 に答える