c ++ int array - 删除一个int并移动数组的其余部分

时间:2012-11-01 15:30:07

标签: c++ arrays

我希望一双新鲜的眼睛可以帮助我找到我做错的事情。我试图在数组中搜索某个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;
}

1 个答案:

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

的范围