删除存储在数组中的特定类对象[关闭]

2023-12-14

我的代码有问题,我想知道是否有人可以看一下,我创建了一个函数来从数组中删除特定元素。我使用线性搜索来查找元素,然后用后面的元素覆盖我想要删除的元素,因为我还没有找到一种专门删除元素的方法。我的问题是代码实际上不起作用,因为元素没有被覆盖,还有一种方法可以在元素被覆盖后在数组中留下空白。

下面是我的代码:

void deleteinfo()
{
    string search ;
    int found ;

    cout << "\n Delete A Player's Information \n\n" ;
    cout << "Please Enter The Player's Last Name : " ;
    cin >> search ;

    found=linsearch(search);

    if (found==-1)
    {
        cout << "\n There is no player called " << search ;
    }
    else
    {
        player[found].getFirstName() = player[found + 1].getFirstName() ;
        player[found].getLastName() = player[found + 1].getLastName() ;
        player[found].getAge() == player[found + 1].getAge() ;
        player[found].getCurrentTeam() = player[found + 1].getCurrentTeam() ;
        player[found].getPosition() = player[found + 1].getPosition() ;
        player[found].getStatus() = player[found + 1 ].getStatus() ;

        cout << "\n Player has been deleted." ;
    }

    cin.get() ;

    menu() ;
}


int linsearch(string val)
{
    for (int j=0; j <= 3; j++)
    {
        if  (player[j].getLastName()==val)
         return j ;         
    }
        return -1 ;
}

这只是一个如何解决此问题的示例。我假设您有一个静态长度数组(最大玩家数量)。

Player *Players[MAX_PLAYERS];          //Array with pointers to Player objects.
for(int i = 0; i < MAX_PLAYERS; ++i)
    Players[i] = new Players(x, y, z); //Fills the array with some data.

现在进行擦除:

if(found > 0) {
    delete Players[found];             //Destroys the object in question.
    for(int i = found; i < MAX_PLAYERS - 1; ++i)
        Players[i] = Players[i + 1];   //Moves the entire list up by one.
    Players[MAX_PLAYERS - 1] = NULL;   //Marks the new end of the list.
}

这个小片段不会“复制”整个对象,而是将它们在数组中向上移动(不重建任何对象)。

当您遇到第一个 NULL 指针(并且最迟在 MAX_PLAYERS 处)时,数组位于其“末尾”,这说明了您的“空白空间”。或者,您可以省略“向上移动”,只销毁对象并将指针设置为 NULL。这样,您就会知道那里没有玩家。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

删除存储在数组中的特定类对象[关闭] 的相关文章

随机推荐

  • 将文本文件读入数组列表

    我对 Java 很陌生 所以我在解决这个问题时遇到了一些麻烦 所以基本上我有一个如下所示的文本文件 1 John false 2 Bob false 3 Audrey false 如何从文本文件的每一行创建一个 ArrayList 从文件中
  • 为一个小团队和多个并行项目设置 TFS

    我们有一个五人开发团队 将并行构建多个内部项目 经过研究 我发现最好创建一个团队项目 即使对于我们的情况也是如此 对吗 如果是这样 您能否建议如何为项目和时间表设置适当的迭代 TFS 问题 小团队 多个项目听起来与我的情况相似 但我似乎无法
  • 如何获取接口成员列表

    有没有办法获取接口成员列表 我了解 System Reflection MemberInfo 但它包括对象中的所有内容 而不仅仅是某个接口 这是程序 我不知道如何获得接口 因为它不是我写的 但它是 Ascom 标准的一部分 http asc
  • Android ExpandableListView - 寻找教程[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我正在尝试编写一个 And
  • Sveltekit Actions 返回乱码 json

    从 Sveltekit 操作返回的 json 是乱码 我期望这样的事情 foo bar foo2 bar2 但我得到的是这个 Array foo 1 foo2 2 bar bar2 对于嵌套数据来说 这更令人烦恼 这就是我发送的方式 con
  • 传入未定义的目的是什么?

    我注意到了jQuery以及相关的主题插件 例如jQuery UI pass undefined作为模块定义中使用的匿名函数的参数 如下所示 function undefined jQuery 另外 我注意到 jQuery 推荐的其他插件和
  • 如何以编程方式将类或伪类添加到 JavaFX 中的自定义控件?

    在JavaScript世界中 通常设置元素类来表示它的外观 后来由CSS定义 JavaFX 中也是这样吗 例如 如果我想将负值涂成红色怎么办 TableView细胞 我不会直接编码颜色 但为单元格分配了一些类 例如 负 然后将其着色为红色C
  • 创建我的第一个树枝扩展以向基本模板提供全局变量

    我需要用一些 HTML 代码填充一个变量 并使其可用于我的 base html twig 文件 为了实现这一点 我做了一个树枝扩展 这是我第一次使用树枝扩展 所以我不确定这是否是正确的做法 这是我到目前为止所拥有的 扩展代码 class G
  • 如何更改spark中的日志级别?

    我尝试了所有这些方法 但没有任何作用 在 log4j 文件中 log4j logger org OFF log4j rootCategory ERROR console log4j rootCategory OFF console 在代码中
  • wxpython面板全屏?

    我试图让我的程序的 top panel 仅进入全屏 我希望有一个按钮可以执行此操作 我面临的问题是我不知道如何使面板自行进入全屏而不强制整个使用 ShowFullscreen true 进入全屏的框架 我希望你可以帮助我 class top
  • 如何使用 pytest Monkeypatch 模拟两个连续的控制台输入

    如果第一个用户输入的答案是 n 则模块 overwrite file 请参阅 代码示例 会要求输入新文件名 在我的测试设置中 我使用两个连续的 Monkeypatch setattr 调用来模拟输入 如果我使用以下顺序 结果将是无限循环 m
  • delphi获取成员函数指针

    有没有一些技巧如何在 Lazarus delphi 中获取成员函数的指针 我有这段代码无法编译 错误是 在德尔福 variable required在拉撒路 Error Incompatible types got
  • 没有数据库的休眠搜索

    是否可以仅将 hibernate search 用于其注释 bean gt document document gt bean 映射 而不使用数据库 如果是这样 是否有任何在线示例基本上显示如何进行设置 我发现了以下内容 http mojo
  • 错误:找不到模块“eslint-config-flowtype”

    我正在尝试一起使用 Webpack ESLint 和 Flow 类型 但是 当我启动 webpack dev server 时 我收到以下错误消息 奇怪的是eslint config flowtype甚至不是 NPM 中的模块 以前有人遇到
  • 将哈希表值属性导出到 CSV 文件

    我正在运行Test AdfsServerHealth Ref 问题是 输出值之一 值名称Output 是一个数组 显示为System Collection Hashtable我正在尝试找到一种方法以简洁的 Excel 格式获取此内容 例如
  • Android:将 ListVIew 中的项目居中

    我刚刚开始学习Android 想到了一个简单的项目来帮助我学习 我在 LinearLayout 上使用 ListView 创建了一个简单的菜单 我想要做的是将 ListView 中的文本居中 并将 ListView 放在布局中居中 我尝试将
  • 使用 CSS 旋转内联元素

    我意识到已经有很多这样的问题了 但我似乎无法让它们为我工作 因为大多数解决方案都针对 第 n 个孩子 或 以我极其 新手 的技能 我只是不明白它是如何工作的 我正在尝试为一项任务制作一个 交易或不交易 游戏 我花了太多时间让它看起来不错 这
  • WPF控件创建过程的步骤

    我已经寻找这样的解释有一段时间了 但我还没有找到任何解释 问题是我想知道 Wpf 控件的初始化 创建过程的步骤 让我们看一个简单的按钮 我想知道当调用构造函数时发生了什么 何时将控件添加到视觉树 逻辑树 何时调用依赖属性值 何时调用Appl
  • Phonegap触摸事件

    我的问题是我想从首页 index html 播放音频 视频文件 它的工作原理是这样的 function setaudio aud prepend a href img src icons audio file png alt Audioda
  • 删除存储在数组中的特定类对象[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 我的代码有问题 我想知道是否有人可以看一下 我创建了一