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

标签 c++ arrays

我希望有一双全新的眼睛可以帮助我找出我做错了什么。我正在尝试在数组中搜索某个 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/

相关文章:

java 方法中的一维数组设置

android - 尝试将 mutableListOf<String> 存储到 SharedPreferences 但无法设置默认值

arrays - 在 for-in 循环中更改数组的大小

c++ - 这个签名中的第二个参数是什么意思?

c++ - 前向声明 cv::Mat

c++ - 从 matlab 生成 C++ 代码

c++ - 奇怪的场景得到 g++ 错误函数的多重定义

javascript - 如何在angularjs中将数组插入另一个数组

arrays - 如何使用 Perl 更有效地处理大型文本文件

c++ - 如何使用指针确保函数调用正确