如何在 C++ 中从向量中链接删除对?

2024-01-22

我有这个文本文件,我将每一行读入std::vector<std::pair>,

handgun bullets
bullets ore
bombs ore
turret bullets

第一项取决于第二项。我正在编写一个删除函数,当用户输入项目名称时,它会删除包含该项目作为第二个项目的对。由于存在依赖关系,因此依赖于已删除项目的项目也应该被删除,因为它不再可用。例如,如果我删除ore, bullets and bombs无法再使用,因为ore不可用。最后,handgun and turret也应该删除,因为这些对依赖于bullets这取决于ore即间接依赖于ore。该链应继续下去,直到所有依赖对都被删除。

我尝试对当前示例执行此操作,并提供了以下伪代码,

for vector_iterator_1 = vector.begin to vector.end
{
    if user_input == vector_iterator_1->second
    {
        for vector_iterator_2 = vector.begin to vector.end
        {
            if vector_iterator_1->first == vector_iterator_2->second
            {
                delete pair_of_vector_iterator_2
            }
        }

        delete pair_of_vector_iterator_1
    }
}

这不是一个很好的算法,但它解释了我打算做什么。在示例中,如果我删除ore, then bullets and bombs也会被删除。随后,配对取决于ore and bullets也将被删除(bombs没有依赖性)。因为,只有一条单长链(ore-->bullets),只有一个嵌套for循环检查它。但是,单个链中可能存在零个或大量依赖项,从而导致许多嵌套或没有嵌套for循环。所以,这不是一个非常实用的解决方案。我该如何使用可变长度的依赖链来做到这一点?请告诉我。感谢您的耐心等待。

P.S.:如果您不明白我的问题,请告诉我。


一种(天真的)解决方案:

  • 创建要删除的项目队列
  • 添加您的第一个项目(用户输入)
  • While(!empty(items-todelete)) 循环遍历你的向量
  • 每次您发现当前项目是列表中的第二项时,请将第一项添加到队列中,然后删除该对

轻松优化:

  • 确保您不会两次将项目添加到队列中(哈希表/等)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 C++ 中从向量中链接删除对? 的相关文章

  • 尚未注册类型“IServiceProviderFactory[Autofac.ContainerBuilder]”的服务

    当运行以下命令添加数据库迁移脚本时 出现以下错误 dotnet ef migrations add InitialCreate v o Migrations context MyContext 访问 Microsoft Extensions
  • 使用 mono/nunit-console/4 在 Mac OS X 控制台上运行测试

    我安装了 Max OS X 10 11 1 上面装有 Xamarin 我编写了简单的测试类 只是为了测试在 Mac OS X 和 Ubuntu 上运行 Nunit 测试 该类实际上有一个返回字符串的方法 using System names
  • 在实体框架拦截器中向 DbScanExpression 添加内部联接

    我正在尝试使用实体框架 CommandTree 拦截器通过 DbContext 向每个查询添加过滤器 为了简单起见 我有两个表 一个称为 User 有两列 UserId 和 EmailAddress 另一个称为 TenantUser 有两列
  • 在 C# 中按元素相乘数组具有意想不到的性能

    我想找到按元素相乘两个数组的最佳方法 这是更广泛项目的一部分 其中性能而不是唯一的考虑因素 我今天开始用 C Linqpad 编写一些函数 因此它还没有以任何方式进行优化 下面代码的输出如下 Environment ProcessorCou
  • 何时使用 =default 使析构函数默认?

    尽管对构造函数使用 default 对我来说很清楚 即强制编译器在其他构造函数存在时创建默认构造函数 但我仍然无法理解这两种类型的析构函数之间的区别 那些使用 default 的 那些没有显式定义并由编译器自动生成的 我唯一想到的是 gro
  • 更改 Qt OpenGL 窗口示例以使用 OpenGL 3.3

    我正在尝试更改 Qt OpenGL 示例以使用更现代的 opengl 版本 330 似乎合适 所以我做了 在 main cpp 上设置版本和配置文件 设置着色器版本 更改着色器以使用统一 它现在构建没有任何错误 但我只看到一个空白窗口 我错
  • 平滑滚动.net 表单

    您好 我正在 net 中使用表单 并且在运行时动态添加大量链接标签 我将这些链接标签添加到面板并将该面板添加到 winform 当链接标签的数量增加时 表单会显示一个自动滚动条 垂直 现在 当我使用自动滚动向下滚动时 表单在滚动时不会更新其
  • EF Core 通过完全替换断开集合导航属性的更新

    使用 EF Core 5 0 我有一个 SPA 页面 可以加载Group实体及其集合Employee来自 API 的实体 var groupToUpdate await context Groups Include g gt g Emplo
  • 我如何在 C# .NET(win7 手机)中使用“DataContractJsonSerializer”读入“嵌套”Json 文件?

    我有一个问题 如果我的 json 文件看起来像这样 Numbers 45387 Words 空间桶 我可以很好地阅读它 但是如果它看起来像这样 Main Numbers 45387 Words 空间桶 某事 数字 12345 单词 克兰斯基
  • 读取 C# 中的默认应用程序设置

    我的自定义网格控件有许多应用程序设置 在用户范围内 其中大部分是颜色设置 我有一个表单 用户可以在其中自定义这些颜色 并且我想添加一个用于恢复默认颜色设置的按钮 如何读取默认设置 例如 我有一个名为的用户设置CellBackgroundCo
  • 如何在 SqlDataReader.Read() 期间从死锁异常中恢复

    我的 NET 应用程序的事件日志显示 它在从 Sql Server 读取数据时偶尔会出现死锁 这种情况通常非常罕见 因为我们已经优化了查询以避免死锁 但有时仍然会发生 过去 我们在调用ExecuteReader函数在我们的SqlComman
  • 为什么这个没有特殊字符的正则表达式会匹配更长的字符串?

    我正在使用此方法来尝试查找匹配项 例如 Regex Match A2 TS OIL TS OIL RegexOptions IgnoreCase Success 我得到了真实的结果 我很困惑 我认为这应该返回 false 因为模式中没有特殊
  • ASP.Net Core 内容配置附件/内联

    我正在从 WebAPI 控制器返回一个文件 Content Disposition 标头值自动设置为 附件 例如 处置 附件 文件名 30956 pdf 文件名 UTF 8 30956 pdf 当它设置为附件时 浏览器将要求保存文件而不是打
  • 类的成员复制

    在学习 复制成员 概念时 书中给出了如下说法 此外 如果非静态成员是引用 const 或没有复制赋值的用户定义类型 则无法生成默认赋值 我不太明白这个声明到底想传达什么 或者说这个说法指的是哪一种场景 谢谢 该语句与编译器自动为您编写的类
  • 如何获取 QTableView 的标题列表?

    我有一个QTableView我的对话框中的对象 我需要访问该表的水平标题并将它们放入QStringList object 尽管进行了大量搜索 但我在 Qt 文档中找不到如何获取此标头列表 编辑 我发现的最接近的地方是this https w
  • 为什么 set_symmetry_difference 无法与比较器一起使用?

    Example program include
  • C# 构建一个 webservice 方法,它接受 POST 方法,如 HttpWebRequest 方法

    我需要一个接受 POST 方法的 Web 服务 访问我的服务器正在使用 POST 方法 它向我发送了一个 xml 我应该用一些 xml 进行响应 另一方面 当我访问他时 我已经使用 HttpWebRequest 类进行了管理 并且工作正常
  • 如何在c的case语句中使用省略号?

    CASE expr no commas ELLIPSIS expr no commas 我在c的语法规则中看到了这样的规则 但是当我尝试重现它时 int test float i switch i case 1 3 printf hi 它失
  • 在简单注入器中解析具有自定义参数的类

    我正在使用以下命令创建 WPF MVVM 应用程序简易注射器作为 DI 容器 现在 当我尝试从简单注入器解析视图时遇到一些问题 因为我需要在构造时将参数传递到构造函数中 而不是在将视图注册到容器时 因此这不是适用的 简单注入器将值传递到构造
  • 使我的 COM 程序集调用异步

    我刚刚 赢得 了在当前工作中维护用 C 编码的遗留库的特权 这个dll 公开使用 Uniface 构建的大型遗留系统的方法 除了调用 COM 对象之外别无选择 充当此遗留系统与另一个系统的 API 之间的链接 在某些情况下 使用 WinFo

随机推荐

  • 为什么我们不能有静态外部类[重复]

    这个问题在这里已经有答案了 为什么我们不能创建外部的静态类 我在这个社区中阅读了该问题的答案 但还没有得到完美的答案 有人可以帮我一个确切的答案吗 static class A void display System out println
  • Excel 文件格式无法用 Pandas 确定,随机发生

    我有一个编辑 xlsx 文件的脚本 一年半以来我每周都成功运行 直到上周开始出现此错误 Excel file format cannot be determined you must specify an engine manually d
  • Excel VBA查询外部.aspx页面并检索数据

    我已经为此苦苦挣扎了大约一天 基本上 我想编写一个 Excel 宏来循环遍历 Excel 中的列表 查询网页并检索一些数据 理想情况下 我只想检索所需的数据 以便将其放置在相邻的单元格中 但此时我会尽一切努力 页面是ASP net 我没有经
  • 有没有 XSLT 处理命令行工具? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想通过 XSLT 文件和 XSLT 处理工具将 XML 文件更改为修改后的 XML 文件 例如 xs
  • 在 Objective C 中通过 POST 上传图像

    我目前正在通过 HTTP Post 将图像上传到服务器 但似乎无法找到构建调用该服务的 url 的方法 用户从库或相机中选择图像 然后调用执行插入语句的 json 服务 该服务需要以下 uritemplate DataTransfer Se
  • 使用 setup.py 自定义 python 包目录布局

    假设我有以下目录结构 src python generated init py a py lib init py b py 我的是什么setup py需要看起来像这样才能创建目录布局如下的 dist src python init py a
  • 使用任务并行库时如何处理所有未处理的异常?

    我正在使用 TPL 任务并行库 http msdn microsoft com en us library dd460717 28v VS 100 29 aspx 在 NET 4 0中 我想通过使用集中所有未处理异常的处理逻辑Thread
  • 在 pandas 数据框中映射值的范围[重复]

    这个问题在这里已经有答案了 如果之前有人问过这个问题 我深表歉意 但我广泛查看后没有结果 import pandas as pd import numpy as np df pd DataFrame data np random randi
  • Javascript 对 dom 的更改在按下后退按钮时丢失

    我有这个视图可以更改 div 内的文本 然后 用户可以单击链接跳转到另一个页面 但是当用户按下 后退 按钮时 所有 DOM 更改都会丢失 FF 会记住更改后的 div 文本 但 Chrome 和 IE 不会 我发现了类似的问题 但就我而言
  • CakePHP 3 上未找到“Locale”类问题

    我刚刚下载了文件这个链接 http bakery cakephp org articles lorenzo 2014 09 28 cakephp 3 0 0 beta2 released 提取并尝试执行 但出现此错误 Fatal error
  • 获得黑暗的外观和感觉? [复制]

    这个问题在这里已经有答案了 我厌倦了 Swing 的标准外观和感觉 需要一些看起来很酷的深色和黑色主题 作为秋千一部分的 DefaultMetal Ocean Motif 或 Windows 都不能满足我的需求 正在使用漂亮的图形用户界面
  • 如何在Eclipse中指定C++系统包含路径?

    GCC 有选项 isystem 将目录视为系统目录 这样就不会为这些目录生成编译警告 但是我在 Eclipse 中找不到类似的设置 我使用的是 Mars 2 Release 4 5 2 已尝试在 项目属性 C C 常规 预处理器包含路径 宏
  • 何时在数据库表之间使用一对一关系?

    一个数据库设计问题 你什么时候决定使用1对1关系表 我看到这种情况的地方之一是 例如 当您有一个 User 和 UserProfile 表时 人们会将它们分开 而不是将所有列都放在 User 表中 从技术上讲 您可以将所有列放在一个表中 因
  • Python ReportLab 使用 splitfirst/splitlast

    我正在尝试使用 Python 和 ReportLab 2 2 来创建 PDF 报告 根据用户指南 http www reportlab com docs userguide pdf 特殊 TableStyle 索引 原文如此 在任何样式命令
  • 在 purrr 的 map() 函数中使用 levene_test 吗?

    有没有办法通过进行 Levene 测试map 函数从purrr包裹 或者是否有另一种简单的方法来计算各种变量的 Levene 检验 我的数据框包含各种因子和数字列 所以我尝试使用map if 效果很好 例如 对于夏皮罗检验 但是 我不知道如
  • 在 Delphi 程序中托管 .NET 运行时

    我正在考虑在 Delphi 程序中使用一些 NET 代码 我需要使用 net 程序集和预定义函数使我的程序可扩展 我已经支持常规 DLL 经过网上大量搜索 我发现托管VCL http www managed vcl com 但我还没有准备好
  • 如何在 Xcode 8 上恢复之前的提交?

    假设我有 5 个本地提交 commit 1 commit 2 commit 3 commit 4 commit 5 当我工作的时候 我想回去提交2 我该怎么做呢 在以前版本的 Xcode 中使用快照非常容易 放弃更改 只会返回到提交 5 对
  • 如何从R中的Lasso回归获得系数?

    有人可以告诉我如何获取包中套索回归的系数lars in R 例如 如果代码如下 test lasso lars A B 谢谢 First get cross validation score test lasso cv cv lars A
  • 具有自定义颜色比例条的热图,用于低于和高于阈值的值

    我想在 R 中使用 pheatmap 制作一个热图 颜色为绿色 黑色和红色 并使用图例中的范围从 2 到 2 这是我使用的代码 library pheatmap my palette lt colorRampPalette c green
  • 如何在 C++ 中从向量中链接删除对?

    我有这个文本文件 我将每一行读入std vector