我有一个维护整数向量的程序。我有三个函数可以添加一个整数,删除一个整数并检查一个整数是否已经在向量中。问题出在最后一个。
vector<int> children;
void CtpTestingApplication::addChild(int child)
{
for (int i=0; i<children.size(); i++)
{
//already a child
if (children[i]==child)
return;
}
//child not yet recorded
children.push_back(child);
cout<<"added child "<<child;
}
void CtpTestingApplication::removeChild(int child)
{
for (int i=0; i<children.size(); i++)
{
//already a child, remove it
if (children[i]==child)
{
children.erase(children.begin()+i);
cout<<"removed child "<<child;
}
}
//not recorded, no need to remove
}
bool CtpTestingApplication::isChild(int child)
{
vector<int>::iterator ic;
bool result = false;
for (ic= children.begin(); ic < children.end(); ic++)
{
cout<<*ic<<" vs "<<child;
// if (child==*ic)
result = true;
}
return result;
}
当我取消注释“if (child==*ic)”时,我总是遇到分段错误,即使打印输出显示向量不为空并且包含预期的整数。
例如,如果注释了 if 语句,我可以看到 1 vs 4、2 vs 4、4 vs 4、12 vs 4
我还尝试使用 children[i] 等进行循环,但无济于事。任何帮助,将不胜感激。谢谢你。