我在std::vector::push_back
中使用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]早先初始化。
答案 0 :(得分:4)
您正在使用malloc
分配未初始化的内存。因此,children
也未初始化。在其上调用push_back
是UB。
使用a[i] = new link();
。