整数ベクトルを維持するプログラムがあります。整数を追加し、整数を削除し、整数が既にベクトルにあるかどうかを確認する 3 つの関数があります。問題は最後のものです。
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 対 4、2 対 4、4 対 4、12 対 4 が表示されます。
children[i] などを使用してループも試みましたが、役に立ちませんでした。どんな助けでも大歓迎です。ありがとうございました。