将元素从地图移动到另一个地图的有效方法

2023-11-26

我必须找到一个有效的解决方案来解决这个问题。我有两张地图。我必须将一些元素从map1移动到map2(即从map1删除并放入map2)。 我有一些键,通过它们我可以找到 map1 中的元素,即我现在正在做的事情:

bool temp;
temp = map1[key1];
map2[key1]=temp;
map1.erase(key1)

我为每个键执行此操作(循环中)

我的问题是是否有更便宜的解决方案 (我使用C++11编译器)


理想的解决方案只有通过 C++17 才成为可能:地图::提取()

std::map 通常被实现为二叉树, 二叉树为每个内存对象存储一个键值条目。 这样就可以通过简单地交换该内存块的所有权来移动条目。 这是通过仅翻转一些内部指针来完成的(包括重新平衡两棵树,如果最终结果是更改两棵树,则无论如何都必须完成)。

这不仅避免了在内存中移动对象,还避免了任何内存分配和释放(这具有不可预测的最坏情况性能)。

Example:

// Before Darwin, it was thought that whales were fish.
std::map<int, std::string> fish{{1,"whaleshark"}, {2,"whale"}, {3,"shark"}};
std::map<int, std::string> mammalia{{1,"cat"}, {2,"dog"}};

// Oops, the whale belongs to mammalia.
auto whale = fish.extract(2);
whale.key() = 3;
mammalia.insert(std::move(whale));

在 C++17 之前,您必须实现自己的映射才能执行此操作。

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

将元素从地图移动到另一个地图的有效方法 的相关文章

  • 是否可以使静态控件透明?

    我正在尝试实现一个静态控件 该控件刷新 更改文本 以响应每秒发生一次的某个事件 由于我不想每秒绘制整个客户区域 所以我决定使用静态控件 现在的问题是父窗口被蒙皮 这意味着它有自定义位图作为背景 而静态控件没有适应 所以我正在寻找使静态控件的
  • 如何使用 LINQ ForEach 更改 List

    我有一个List
  • gets 和 scanf 有什么区别?

    如果代码是 scanf s n message vs gets message 有什么区别 似乎两者都获取消息的输入 基本区别 参考您的特定场景 scanf 遇到一个时结束接受输入whitespace newline or EOF gets
  • OWIN AuthenticationOptions 在 mvc5 应用程序中运行时更新

    Hi 情况如下 我在 iis 7 上有一个带有 Identity 2 的 MVC 5 应用程序 该应用程序为多个网站提供服务 主机名是某些网站的关键 网站 另一个网站 等等 我决定在我的所有网站上使用谷歌外部登录 每个网站都应该是带有个人
  • 以编程方式更改 Excel 中的字体(Trebuchet MS、Calibari)C#

    我目前正在使用一个 C 应用程序 该应用程序有一个将生成 Excel 文件的类 一切都很顺利 Excel 工作表上填充的数据具有 Times New Roman 字体 我想将其更改为其他字体 Calibari 我怎样才能以编程方式做到这一点
  • 在宏中使用 # [重复]

    这个问题在这里已经有答案了 请解释一下代码 include
  • C# Visual Studio 动态代码片段

    我正在开发一个 WinForms 项目 每天都会执行一些重复性的任务 所以我认为创建代码片段 https msdn microsoft com en us library ms165394 v vs 110 aspx会帮助我 但它仅适用于固
  • MVVM 同步集合

    是否有一种标准化方法可以将 Model 对象集合与 C 和 WPF 中匹配的 ModelView 对象集合同步 我正在寻找某种类 可以使以下两个集合保持同步 假设我只有几个苹果 并且可以将它们全部保存在内存中 换句话说 我想确保如果我将 A
  • ASP.NET 中的 thread.sleep

    我正在为我的网站模拟彗星实时馈送协议 因此在我的控制器中我添加 while nothing new before timeout Thread Sleep 1000 但我注意到添加此功能后整个网站变慢了 调试后我得出结论 当我打电话时Thr
  • UWP - 绑定枚举差异

    我遇到了一个非常有趣的问题 假设 UWP 应用中有以下 XAML 页面内容
  • 如何“全局”捕获对象实例中引发的异常

    我目前正在编写一个 winforms 应用程序 C 我正在使用企业库异常处理块 遵循我所看到的相当标准的方法 IE 在 Program cs 的 Main 方法中 我已将事件处理程序连接到 Application ThreadExcepti
  • 除法时的小数舍入误差 (C#)

    我基本上有四个数字 比如 100 200 300 400 我需要计算概率为 100 100 200 300 400 200 100 200 300 400 等等在 当我使用小数数据类型来存储这些概率时 由于舍入问题 它们不会达到 1 在不使
  • 是否有理由为什么用 XmlInclude 修饰的基类在序列化时仍然会抛出类型未知的异常?

    我将简化代码以节省空间 但所提供的内容确实说明了核心问题 我有一个类 它的属性是基类型 有 3 个派生类可以分配给该属性 如果我将任何派生类分配给容器并尝试序列化容器 XmlSerializer 会抛出可怕的错误 类型 x 不是预期的 使用
  • 实体框架中的导航属性是什么

    我是实体框架的新手 当Visual Studio创建模型图时我们主要可以看到Entities Propertie和Navigation Properties这两个东西 那么这些Navigation Properties是什么 如何使用它们
  • 简单的喷射器将具体类型与生活方式结合起来

    我正在寻找一种可以使用指定的生活方式注册具体类型的方法 基本上如下所示 public void SomeFunction Type concrete Lifestyle lifestyle gt container Register con
  • 如何在 Windows 8.1 上打开多个 Visual Studio 窗口? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我使用的是 Windows 7 我能够启动多个 Visual Studio 并同时工作 现在我有 Windows 8 1 操作系统 每当我
  • 如何进行平衡组捕获?

    假设我有这个文本输入 tes tR R abc aD mnoR xyz 我想提取 ff 输出 R abc R xyz D mnoR xyz R R abc aD mnoR xyz 目前 我只能使用平衡组方法提取组内的内容 如中所示msdn
  • 在 C# 中为 ListBox 分配数据源时,如何从 ListBox 中删除所选项目?

    在 C 中为 ListBox 分配数据源时 如何从 ListBox 中删除所选项目 尝试删除时出现错误 设置 DataSource 属性后 无法修改项目集合 但是当我尝试从数据源 数据表 中删除项目时 它会抛出错误 因为 数据行不在当前行集
  • 更快的 WinSock sendto()

    我使用的是 Windows Server 2008 我的程序是用 C 编写的 我在 while true 循环中使用 WinSock2 和 sendto 来发送数据包 代码如下 while true if c snd gt max c sn
  • 有关 Endian 性和 .Net 的详细信息?

    我有几个关于字节顺序的问题 这些问题足够相关 我保证将它们作为一个问题提出 1 字节顺序是由 Net还是由硬件决定的 2 如果是由硬件决定的 我怎样才能在C 中找出硬件的字节序 3 字节序是否影响二进制交互 例如 OR AND OR 或移位

随机推荐

  • PHP - 获取网站的图标并在必要时将其转换为 png

    对于任何给定的站点 example domain tld 或仅仅是 domain tld 我需要在 PHP 中执行以下操作 If the site has a favicon get it wherever it is 如果它还不是 PNG
  • 使用 spring-data-mongodb 持久化包含对象的对象

    下面是一个后续问题问题 13832188 我在用着spring data mongodb版本1 1 1 RELEASE 如果所有成员变量都是原始类型 我就能够持久保存一个对象 即使该对象的名称 PersistenceConstructor通
  • 检测 C# 库中主线程中的运行

    我正在创建一个 C dll 其他开发人员将在 WinForms 中使用它 由于某些原因 我想检测是否从主 GUI 线程调用该库中的方法 并警告开发人员他已经做了这样的事情 即在日志文件中 有没有合理的方法来检测主线程的调用方法 请记住 我无
  • Maven 包含另一个用于插件配置的 pom

    有没有办法在 Maven pom 中包含另一个 pom 或信息 我有几个基本上不相关或有不同父 pom 的 pom 然而 对于打包来说 需要有一个与所有项目相同的清单 所以目前我有一个 pom
  • 比较 PHP 的 __get() 与 Python 中的 __get__() 和 __getattr__()

    有什么区别 get and getattr 在Python中 我来自 PHP 背景 那里只有 get 我什么时候应该使用哪个功能 我已经尝试解决这个问题有一段时间了 我看到很多问题 比如this one 询问之间的区别 getattr an
  • 将线程与 asyncio 结合使用

    我正在寻找一种方法来生成不同的线程 在我的实际程序中 线程数在执行过程中可以改变 来执行无限运行的操作 这会在运行期间阻塞我的整个应用程序 最坏的情况是 几秒钟 因此 我使用标准线程类并且asyncio 因为我的程序的其他部分正在使用它 这
  • 如何在shell中从二进制文件打印浮点值?

    我有由双浮点 8 字节 或仅浮点 4 字节 值组成的二进制文件 该文件是通过以下方式生成的 python c from struct import pack nwith open file bin wb as f f write pack
  • 回调调用之间的时间间隔?

    我有一个主要使用 PyAudio 的实验室项目 为了进一步了解其工作方式 我做了一些测量 在本例中是回调之间的时间 使用回调模式 我计时了 得到了一个有趣的结果 256 块大小 44 1k fs 0 0099701 0 0000365 0
  • ImportError:动态模块未定义模块导出函数(PyInit_cv2)

    当我尝试在 IPython 中导入 cv2 时 出现此错误 ImportError 动态模块未定义模块导出函数 PyInit cv2 我有opencv 3 0 ubuntu 14 04 python 3 4 我在网上搜索但找不到任何答案 P
  • 关闭浏览器窗口之前的javascript确认对话框

    我需要在使用 javascript 或 PHP 关闭浏览器窗口之前显示一个确认对话框 当我点击浏览器的关闭按钮时 应该会出现确认框 否则 不应显示该对话框 Thanks 关闭浏览器时将显示它 window onbeforeunload fu
  • 使用触发器('reload')进行ajax调用后jqgrid不重新加载

    我正在尝试使用刚刚更改的新数据重新加载网格 以便用户可以看到经过修改的新数据 我的方法 jQuery relCasePick click function var ids jQuery list10 jqGrid getGridParam
  • Bean 属性“xxx”不可写或具有无效的 setter 方法

    我有春季网络应用程序 我已经定义了控制器 bean 它将服务 bean 作为属性 亦服务豆以道 Dao 经过测试并且工作正常 现在服务有问题 事实上我会确定那里的二传手 那么问题出在哪里呢 控制器豆
  • 带用户/密码的 Genymotion 代理

    我使用以下配置通过 Genymotion 运行 Android 对于仅主机 我使用 192 168 1 213 DHCP 分配以 192 168 1 214 开头的地址 我的计算机位于 Squid 代理后面 该代理具有用户名和密码 地址为
  • 如何在perl脚本退出之前运行一段代码

    在我的脚本中 我需要从磁盘文件加载一些信息 并且在脚本运行期间 信息可能会更改 为了保持磁盘中文件和内存副本中的文件的一致性 我需要 每当内存中的信息发生更改时 将信息写回磁盘或定期写入 返回到磁盘或在脚本退出时将它们写回 这是首选方法 因
  • 随机生成无重复数组

    我正在尝试创建一些生成没有重复值的随机数组的东西 我已经看过其他答案 但似乎没有一个可以帮助我理解 我想不出一种方法来实际生成不包含重复项的随机数 这是我到目前为止所尝试过的 srand time NULL int numbers 4 fo
  • 如何将数据插入 Laravel 数据库?

    我是编程新手 我在views register blade php中创建了一个基本表单 如下所示 section content h1 Registration Form h1 hr h3 Please insert the informa
  • EF4 更新实体而不首先获取实体

    如何更新实体而无需调用来选择它 如果我提供实体的密钥 它是否应该在 ObjectContext 上调用 SaveChanges 后不知道更新 我目前这样做 var user context Users Single u gt u Id 2
  • 在 R 中希伯来语编码 Hell 并在 Windows 中编写 UTF-8 表

    我正在尝试保存提取的数据RSelenium from https www magna isa gov il Det ails aspx l he 但是虽然 R 成功地将希伯来字符打印到控制台 但在导出 TXT CSV 或其他简单的 R 函数
  • C:inline 关键字值得吗?

    是否值得使用 inline 关键字 或者编译器足够聪明 知道何时需要内联函数 是的 它足够聪明 但在过去 40 年里 C 程序的构建方式却毫无进展 它仍然一次一个源代码文件 因此 要在多个 c 文件中内联一个函数 请将函数定义放入 h 文件
  • 将元素从地图移动到另一个地图的有效方法

    我必须找到一个有效的解决方案来解决这个问题 我有两张地图 我必须将一些元素从map1移动到map2 即从map1删除并放入map2 我有一些键 通过它们我可以找到 map1 中的元素 即我现在正在做的事情 bool temp temp ma