-1

我正在使用std::vector::push_backa for-loop,当我添加 if 条件时,它开始给出错误。

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

其中a是包含向量的结构。

该错误似乎不取决于条件。

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 回答