我希望有一双全新的眼睛可以帮助我找出我做错了什么。我正在尝试在数组中搜索某个 int,一旦找到它,它将删除它并将剩余的元素移到填充“删除”的位置。
这将用于像 A.remove(25) 这样的类对象,其中对象 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;
}
最佳答案
在你的内部 for 循环中:
for(unsigned Z=J; J<Num; Z++)
循环条件应该是Z<Num
而不是 J<Num
:
for(unsigned Z=J; Z<Num; Z++)
否则J<Num
将继续评估为 true 和 Z
将递增直到它超出 Pool
的范围
关于c++ int 数组 - 删除一个 int 并移动数组的其余部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13180314/