我希望一双新鲜的眼睛可以帮助我找到我做错的事情。我试图在数组中搜索某个int,一旦找到它,它将删除它并将剩余的元素移到其中以填充“删除”所在的位置。
这将用于像A.remove(25)这样的类obj,其中obj A包含一些变量,例如Num(数组中的元素数),Cap(数组的总容量)和Pool [ ](包含所有数字)。
bool Set::remove(int X)
{
for(unsigned J=0; J<Num; J++)
{
if(Pool[J] == X)
{
for(unsigned Z=J; J<Num; Z++)
{
if(Z == (Num-1))
{
Pool[Z] = NULL;
}
else
{
Pool[Z] = Pool[Z+1];
}
}
return true;
}
}
return false;
}
答案 0 :(得分:4)
在你的内心循环中:
for(unsigned Z=J; J<Num; Z++)
循环条件应为Z<Num
而不是J<Num
:
for(unsigned Z=J; Z<Num; Z++)
否则J<Num
将继续评估为true,Z
将递增,直到超出Pool