将对象移动到地图中

2024-03-21

这样做的问题是巨大的物体将被复制到地图中

Huge huge1(some,args);
Huge huge2(some,args);

std::map<int,Huge> map1;
std::map<Huge,int> map2;

map1.insert({0,huge1});
map2.insert({huge2,0});

我怎样才能保证搬家?这会起作用还是还有更多作用?

map1.insert({0,std::move(huge1)});
map2.insert({std::move(huge2),0});

std::map::insertR 值有过载:

std::pair<iterator,bool> insert(value_type&&);

任何绑定到此重载的表达式都将调用 R 值构造函数。自从std::map<K,V>::value_type is std::pair<const key_type, mapped_type>, and std::pair有一个采用 R 值的构造函数:

template<class U1, class U2> 
pair(U1&& x, U2&& y);

那么你可以保证 R 值构造函数key_type and mapped_type将在创建时被调用pair对象,并且在映射插入中,只要使用创建 R 值的表达式插入该对,例如:

map1.insert(std::make_pair(0, Huge());

OR

map1.insert(std::make_pair(0, std::move(huge1));

当然,这一切都取决于Huge具有适当的 R 值构造函数:

Huge(Huge&& h)
{
  ...
}


最后,您还可以使用std::map::emplace如果你只是想构建一个新的Huge对象作为地图中的元素。

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

将对象移动到地图中 的相关文章

  • 使用 CMake 时如何导出 Emscripten 中的 C 函数

    In 本教程 https emscripten org docs porting connecting cpp and javascript Interacting with code html interacting with code
  • Grpc - 将消息从一个客户端发送到连接到同一服务器的另一个客户端

    是否可以将消息从一个客户端发送到连接到同一服务器的另一个客户端 我想将数据从一个客户端发送到服务器然后发送到特定客户端 我想我需要获取客户端 ID 但我不知道如何获取此 ID 以及如何从服务器将此消息发送到该客户端 我这里有一个样本 这是一
  • 转换 const void*

    我有一个函数返回一个const void 我想用它的信息作为char 我可以将它投射为 C 风格的罚款 char variable但是当我尝试使用reinterpret cast like reinterpret cast
  • 如何在类文件中使用 Url.Action() ?

    如何在 MVC 项目的类文件中使用 Url Action Like namespace 3harf public class myFunction public static void CheckUserAdminPanelPermissi
  • 现代 C++ 编译器是否能够在某些情况下避免调用 const 函数两次?

    例如 如果我有以下代码 class SomeDataProcessor public bool calc const SomeData d1 const SomeData d2 const private Some non mutable
  • java中如何重新初始化int数组

    class PassingRefByVal static void Change int pArray pArray 0 888 This change affects the original element pArray new int
  • 无法注册时间触发的后台任务

    对于 Windows 8 应用程序 在 C Xaml 中 我尝试注册后台任务 很难说 但我想我的后台任务已正确注册 但是当我单击调试位置工具栏上的后台任务名称时 我的应用程序停止工作 没有任何消息 我查看了事件查看器上的日志 得到 具有入口
  • 语音识别编程问题入门

    所以 你们可能都看过 钢铁侠 其中托尼与一个名为贾维斯的人工智能系统进行交互 演示剪辑here http www youtube com watch v Go8zsh1Ev6Y 抱歉 这是广告 我非常熟悉 C C 和 Visual Basi
  • 在 C# 中检查 PowerShell 执行策略的最佳方法是什么?

    当你跑步时Get ExecutionPolicy在 PowerShell 中 它得到有效的执行政策 https learn microsoft com en us powershell module microsoft powershell
  • 从网页运行 ClickOnce 应用程序,无需用户操作

    我们有一个基于 Java 的 Web 应用程序以及用 C 编写的相同应用程序 如果 java 检查器发现客户端计算机上没有安装 Java 则应该运行该应用程序 这个想法是运行 C 单击一次 http en wikipedia org wik
  • 如何递归取消引用指针(C++03)?

    我正在尝试在 C 中递归地取消引用指针 如果传递一个对象 那就是not一个指针 这包括智能指针 我只想返回对象本身 如果可能的话通过引用返回 我有这个代码 template
  • 从 C# 使用 Odbc 调用 Oracle 包函数

    我在 Oracle 包中定义了一个函数 CREATE OR REPLACE PACKAGE BODY TESTUSER TESTPKG as FUNCTION testfunc n IN NUMBER RETURN NUMBER as be
  • 不可变类与结构

    以下是类与 C 中的结构的唯一区别 如果我错了 请纠正我 类变量是引用 而结构变量是值 因此在赋值和参数传递中复制结构的整个值 类变量是存储在堆栈上的指针 指向堆上的内存 而结构变量作为值存储在堆上 假设我有一个不可变的结构 该结构的字段一
  • memcpy/memmove 到联合成员,这是否设置“活动”成员?

    重要说明 一些评论者似乎认为我是从工会抄袭的 仔细看memcpy 它从普通旧地址复制uint32 t 它不包含在联合中 另外 我正在复制 通过memcpy 到工会的特定成员 u a16 or u x in a union 不直接到整个联盟本
  • 如何在 C# 中创建异步方法?

    我读过的每一篇博客文章都会告诉您如何在 C 中使用异步方法 但由于某些奇怪的原因 从未解释如何构建您自己的异步方法来使用 所以我现在有这段代码使用我的方法 private async void button1 Click object se
  • 比较:接口方法、虚方法、抽象方法

    它们各自的优点和缺点是什么 接口方法 虚拟方法 抽象方法 什么时候应该选择什么 做出这一决定时应牢记哪些要点 虚拟和抽象几乎是一样的 虚方法在基类中有一个实现 可以选择重写 而抽象方法则没有 并且must在子类中被覆盖 否则它们是相同的 在
  • Visual Studio 2015 - Web 项目上缺少共享项目参考选项卡

    我从 MSDN 订阅升级到 Visual Studio 2015 因为我非常兴奋地阅读有关共享项目的信息 当我们想要做的只是重用代码时 不再需要在依赖项中管理 21382 个 nuget 包 所以我构建了一个测试共享项目 其中包含一些代码
  • 没有“对 *this”功能的右值引用的解决方法

    我有一个围绕可移动对象的代理容器类 并希望代理能够隐式生成对底层对象的右值引用 但仅当代理本身被移动时 我相信我将能够按照提案 n2439 实施此行为 将移动语义扩展到 this http www open std org jtc1 sc2
  • MySqlConnectionStringBuilder - 使用证书连接

    我正在尝试连接到 Google Cloud Sql 这是一个 MySql 解决方案 我能够使用 MySql Workbench 进行连接 我如何使用 C 连接MySqlConnectionStringBuilder 我找不到提供这三个证书的
  • 如何在 C 中将 char 连接到 char* ?

    我怎样才能前置char c to char myChar 我有c值为 A and myChar值为 LL 我怎样才能前置c to myChar使 ALL 这应该有效 include

随机推荐

  • 在Python中的远程机器上执行命令

    我正在 Ubuntu 上用 python 编写一个程序来执行命令ls l在 RaspberryPi 上 连接网络 有人可以指导我该怎么做吗 当然 有多种方法可以做到 假设您有一个 Raspberry Piraspberry lan主机和您的
  • 如何将字符串传递给批量插入而不是文件?

    我曾经使用批量插入命令来转换 Csv 文件 int 表 最近 我将 CSV 文件保存为 SQL Server 中的 VarBinary 值 现在我可以通过使用 CAST 和 CONVERT 函数将其类型转换为 Varchar 来从 Varb
  • 发布 apk 后的真实 Android 设备上的 Google 地图仍然是空白

    我想生成并使用 google API 密钥 启用谷歌地图 v2 API 使用谷歌地图创建了包含一项活动的项目 工作室中的默认向导 在谷歌上创建了用于调试项目的密钥 并已分配SHA1 应用程序包谷歌上项目密钥的应用 API 密钥已插入 goo
  • 如何在mapbox ios sdk中向MGLFillStyleLayer添加线宽属性?

    我必须使用 MGLPolygonFeature 在 MGLFillStyleLayer 中添加多边形特征 但问题是我无法更改轮廓宽度 线宽为MGLFillStyleLayer目前无法更改 建议的解决方法是使用相同的源来创建MGLLineSt
  • 将 grails 从 2.1.1 升级到 2.4.3

    我正在将 grails 应用程序从 2 1 1 升级到 2 4 3 解决升级过程中的错误是一个永无止境的故事 现在我被困在这一点上 有什么想法如何解决这个问题吗 Thanks C workspace grails apps monitori
  • 如何在 Jooq 中比较日期

    In the mysqldb 我有一个字段名称date type date 该字段的值如下2019 11 05 如何在jooq中查询上面提到的日期 我尝试跟随 java util Date date SimpleDateFormat yyy
  • 如何按parentId JS对对象数组进行排序

    我怎样才能对这个数组进行排序 我正在尝试对来自 a 的对象数组进行分组parentId数组的每个元素带来的级别总是不确定的 我期望的结果就是输出中的结果 Input id 123 name ABC parentID id 645 name
  • 在 Pandas 中创建 DataFrame 时填充默认 0

    我有一个输入字典 其中列表的长度可能不同 d b 2 3 a 1 当我做 df pd DataFrame data d 我正在看ValueError 数组的长度必须相同 Question 创建 df 时如何用默认值 例如 0 填充缺失值 创
  • 如何使用 elisp 更改缓冲区中的单词?

    如何使用 elisp 更改 at point 的单词 很像 大写单词 但使用我自己的函数 背景 我编写了一个函数 可以检测当前点数字的基数 并将其转换为任何其他基数 我想做的是直接更改缓冲区中的数字 TIA 马库斯 试试这个代码 我已经包含
  • 如何在表格内打印表格的内容? [路亚]

    我想做的只是在表中打印表的内容 例如 local stats table1 tTable1 data 1 tTable2 data2 2 tTable3 data3 3 我并不真正关心表 1 或所有表 而是关心数据变量中的信息 我怎样才能打
  • 为自定义 WCF 绑定指定 HTTPS

    我有一个自定义绑定定义如下
  • 在列表中调用“del”

    class ToBeDeleted def init self value self value val Whatever def del self print self value l ToBeDeleted i for i in ran
  • 从另一个 Java 应用程序启动一个 Java 应用程序

    我正在做一个 Java 记录 重放工具 我需要从我的主 Java 应用程序启动 Java 应用程序 我需要访问 EventDispatchThread 以便拦截事件并记录它们 因此我通过反射启动应用程序 简化的代码片段 Class
  • .NET 编译器平台:不工作

    我安装了 Microsoft Visual Studio Enterprise 2017 版本 15 5 5 显然是日期的最新版本 但是 我无法使用 NET Compiler Platform SDK 我曾经将它作为扩展 但现在它无法与警告
  • 根据任意数字出现拆分字符串

    使用正则表达式如何根据数字出现拆分字符串 例如我有一个如下所示的字符串 var text 1 dozen 3 dozen 4 dozen kg 我需要把它分开 预期输出 1 dozen 3 dozen 4 dozen kg 我尝试了以下正则
  • 有没有办法使用 JS 确定何时加载 4 个图像?

    我一页上有 4 张图片 我想在所有 4 个图像加载完毕后触发 JS 事件 我当然无法确定图像将以哪个顺序加载 因此我无法在最后一个图像上触发事件 一个想法是有一个计数器 但我想不出检查该计数器何时等于 4 的最佳方法 因为我不喜欢 setT
  • 我在理解 AVX shuffle 内在函数如何为 8 位工作时遇到一些问题

    我正在尝试使用 mm256 shuffle epi8 将 16 位数据打包为 8 位 但我得到的结果不是我所期望的 auto srcData mm256 setr epi8 1 2 3 4 5 6 7 8 9 10 11 12 13 14
  • 滚动条上的灰点[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 Visual Studio 2017 中滚动条上的灰点是什么 代码建议 我遇到的一个场景是忘记利用我的方法 我看到的另一个建议是改进我
  • Google Play 控制台堆栈跟踪

    在 Google Play Console 中 我收到以下异常跟踪 虽然我添加了反混淆文件 但行号显示为 0 java lang NullPointerException at com ae apps common managers Con
  • 将对象移动到地图中

    这样做的问题是巨大的物体将被复制到地图中 Huge huge1 some args Huge huge2 some args std map