C++ 右值引用和移动语义

2024-02-22

C++03 存在可能隐式发生不必要的副本的问题。为此,C++11引入了rvalue references and move semantics。现在我的问题是,这种不必要的复制问题是否也存在于 C# 和 java 等语言中,或者只是 C++ 的问题?换句话说,是否rvalue references使 C++11 比 C# 或 Java 更高效?

就 C# 而言(允许运算符重载),假设我们有一个数学向量类,并且我们像这样使用它。

vector_a = vector_b + vector_c;

编译器肯定会转变vector_b + vector_c到某个临时对象(我们称其为vector_tmp).

现在我不认为 C# 可以区分临时右值,例如vector_tmp或一个左值,例如vector_b,所以我们必须将数据复制到vector_a无论如何,这可以通过使用轻松避免rvalue references and move semantics在 C++11 中。


C# 和 Java 中的类引用具有以下一些属性shared_ptr在 C++ 中。然而,右值引用和移动语义更多地与临时值类型相关,但与 C++ 值类型相比,C# 中的值类型非常不灵活,并且根据我自己的 C# 经验,您最终会得到类,而不是结构,大多数的时间。

所以我的假设是,Java 和 C# 都不会从这些新的 C++ 功能中获益匪浅,这些新功能让代码可以安全地假设某些内容是否是临时的,而不是复制,而是窃取内容。

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

C++ 右值引用和移动语义 的相关文章

  • 加密 JBoss 配置中的敏感信息

    JBoss 中的标准数据源配置要求数据库用户的用户名和密码位于 xxx ds xml 文件中 如果我将数据源定义为 c3p0 mbean 我会遇到同样的问题 是否有标准方法来加密用户和密码 保存密钥的好地方是什么 这当然也与 tomcat
  • 将 VSIX 功能添加到 C# 类库

    我有一个现有的单文件生成器 位于 C 类库中 如何将 VSIX 项目级功能添加到此项目 最终目标是编译我的类库项目并获得 VSIX 我实际上是在回答我自己的问题 这与Visual Studio 2017 中的单文件生成器更改 https s
  • 使用 WebClient 时出现 System.Net.WebException:无法创建 SSL/TLS 安全通道

    当我执行以下代码时 System Net ServicePointManager ServerCertificateValidationCallback sender certificate chain errors gt return t
  • C++ OpenSSL 导出私钥

    到目前为止 我成功地使用了 SSL 但遇到了令人困惑的障碍 我生成了 RSA 密钥对 之前使用 PEM write bio RSAPrivateKey 来导出它们 然而 手册页声称该格式已经过时 实际上它看起来与通常的 PEM 格式不同 相
  • 显示UnityWebRequest的进度

    我正在尝试使用下载 assetbundle统一网络请求 https docs unity3d com ScriptReference Networking UnityWebRequest GetAssetBundle html并显示进度 根
  • while 循环中的 scanf

    在这段代码中 scanf只工作一次 我究竟做错了什么 include
  • SolrNet连接说明

    为什么 SolrNet 连接的容器保持静态 这是一个非常大的错误 因为当我们在应用程序中向应用程序发送异步请求时 SolrNet 会表现异常 在 SolrNet 中如何避免这个问题 class P static void M string
  • 如何在整个 ASP .NET MVC 应用程序中需要授权

    我创建的应用程序中 除了启用登录的操作之外的每个操作都应该超出未登录用户的限制 我应该添加 Authorize 每个班级标题前的注释 像这儿 namespace WebApplication2 Controllers Authorize p
  • 在mockito中使用when进行模拟ContextLoader.getCurrentWebApplicationContext()调用。我该怎么做?

    我试图在使用 mockito 时模拟 ContextLoader getCurrentWebApplicationContext 调用 但它无法模拟 here is my source code Mock org springframewo
  • 如何在桌面浏览器上使用 webdriver 移动网络

    我正在使用 selenium webdriver 进行 AUT 被测应用程序 的功能测试自动化 AUT 是响应式网络 我几乎完成了桌面浏览器的不同测试用例 现在 相同的测试用例也适用于移动浏览器 因为可以从移动浏览器访问 AUT 由于它是响
  • 如何使用 C# / .Net 将文件列表从 AWS S3 下载到我的设备?

    我希望下载存储在 S3 中的多个图像 但目前如果我只能下载一个就足够了 我有对象路径的信息 当我运行以下代码时 出现此错误 遇到错误 消息 读取对象时 访问被拒绝 我首先做一个亚马逊S3客户端基于我的密钥和访问配置的对象连接到服务器 然后创
  • 对现有视频添加水印

    我正在寻找一种用 C 在视频上加水印的方法 就像在上面写文字一样 图片或文字标签 我该怎么做 谢谢 您可以使用 Nreco 视频转换器 代码看起来像 NReco VideoConverter FFMpegConverter wrap new
  • simpleframework,将空元素反序列化为空字符串而不是 null

    我使用简单框架 http simple sourceforge net http simple sourceforge net 在一个项目中满足我的序列化 反序列化需求 但在处理空 空字符串值时它不能按预期工作 好吧 至少不是我所期望的 如
  • 如何从两个不同的项目中获取文件夹的相对路径

    我有两个项目和一个共享库 用于从此文件夹加载图像 C MainProject Project1 Images 项目1的文件夹 C MainProject Project1 Files Bin x86 Debug 其中有project1 ex
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • 混合 ExecutionContext.SuppressFlow 和任务时 AsyncLocal.Value 出现意外值

    在应用程序中 由于 AsyncLocal 的错误 意外值 我遇到了奇怪的行为 尽管我抑制了执行上下文的流程 但 AsyncLocal Value 属性有时不会在新生成的任务的执行范围内重置 下面我创建了一个最小的可重现示例来演示该问题 pr
  • 测试用例执行完成后,无论是否通过,如何将测试用例结果保存在变量中?

    我正在使用 NUNIT 在 Visual Studio 中使用 Selenium WebDriver 测试用例的代码是 我想在执行测试用例后立即在变量中记录测试用例通过或失败的情况 我怎样才能实现这一点 NUnit 假设您使用 NUnit
  • JGit 检查分支是否已签出

    我正在使用 JGit 开发一个项目 我设法删除了一个分支 但我还想检查该分支是否已签出 我发现了一个变量CheckoutCommand但它是私有的 private boolean isCheckoutIndex return startCo
  • 哪种 C 数据类型可以表示 40 位二进制数?

    我需要表示一个40位的二进制数 应该使用哪种 C 数据类型来处理这个问题 如果您使用的是 C99 或 C11 兼容编译器 则使用int least64 t以获得最大的兼容性 或者 如果您想要无符号类型 uint least64 t 这些都定
  • Spring Boot @ConfigurationProperties 不从环境中检索属性

    我正在使用 Spring Boot 1 2 1 并尝试创建一个 ConfigurationProperties带有验证的bean 如下所示 package com sampleapp import java net URL import j

随机推荐

  • 旧的 DLL 文件继续被使用

    我有一个看似随机的问题 我的项目将使用不再存在的旧版本 DLL 文件运行 有时会使用 DLL 文件的真实版本 有时会使用 DLL 文件的旧版本 谁知道 Visual Studio 从哪里获取这个 DLL 文件 它已经过时几个月了 我知道它使
  • 是时候告别 VC6 编译器了吗?

    最近我遇到了指向 VC6 编译器的问题 其中很少有 函数尝试块不起作用 相关问题 https stackoverflow com questions 697026 exception handling in constructors ini
  • Homebrew 安装 libxml2 和 python 模块

    早上好 我正在尝试使用 python 模块安装 libxml2 我已经尝试过以下方法 brew install with python libxml2 gt Downloading ftp xmlsoft org libxml2 libxm
  • 未找到隐式类型数组的最佳类型

    有人可以解释一下为什么这段代码 var marketValueData new new A new A new B 给我错误 未找到隐式类型数组的最佳类型 虽然这个工作得很好 var marketValueData new new A ne
  • 当连续调用的前一个子程序出现错误时停止处理

    我有三个相继运行的潜艇 这些潜艇被称为DataTrimming Pivot and Email Sub AllTogether DataTrimming Pivot Email End Sub 我在里面放了一个错误处理程序Sub DataT
  • 如何使用 mono 将 .NET Windows 服务应用程序迁移到 Linux?

    使用 mono 将 NET Windows 服务迁移到 Linux 的最佳方法是什么 我一直试图避免将应用程序作为计划命令执行 是否有可能获得类似行为的服务 系统守护进程 在Linux中 在Linux下 deamons http en wi
  • Asp.Net Core:将数据添加到IdentityDbContext或使用DbContext

    我与Asp Net Core WebApi项目 我可以将我的表格添加到身份数据库上下文 像这样 public class ApplicationDbContext IdentityDbContext
  • 如何使用 switch 语句使用条件类型来缩小类型范围?

    我有一个 食物 对象 它可以有多种类型 具体取决于 类别 道具的值 该对象来自json 因此之前不可能知道类型 我正在尝试在类别道具上使用 switch 语句 以便将 Food 对象转换为正确的类型 export type Category
  • 如何在没有任何数据库的情况下保存我的 datagridview?

    我创建了一个 C Windows 窗体 其中有一个 DataGridView 我可以从此 DatagridView 添加或删除一些行 但现在我想知道如何保存我的更改 因此每次打开窗口时我都可以看到我添加的行 P S 我必须提到我不想使用任何
  • 如何将文本框的长度绑定到文本块?

    我需要帮助来绑定 wpf 上的一些东西 我有这一列文本框 它显示数据网格中属性的值
  • 如何优化和提高以下代码的性能?它获取大量记录,因此性能缓慢

    如何优化和提高以下Sql存储过程的性能 它获取大量记录 因此导致性能下降 该列也是非聚集索引器 SET ANSI NULLS ON GO SET QUOTED IDENTIFIER ON GO SET NOCOUNT ON GO 根据T选择
  • Docker,它是什么以及目的是什么

    前几天听说过 Docker 想了解一下 但其实我不知道这个 容器 的用途是什么 什么是容器 它可以取代专门用于开发的虚拟机吗 简单来说 公司使用Docker的目的是什么 主要优点 VM 例如 使用虚拟机 VM 软件 可以将 Ubuntu 安
  • ADO.NET 中断开连接和连接方法的确切含义是什么

    我正在学习ADO Net 我读到了这一行 DataReader 是 连接 方法 而数据集是 断开连接 方法 从这句话我得出这样的结论 在数据读取器中我们需要建立与数据库的连接 而在数据集中我们不需要建立与数据库的连接 但是如何在不建立连接的
  • 对矩阵中的列值进行采样,无需替换

    我有一些 R 经验 但总是很难编写新代码 我在处理当前项目时发现了一些非常有用的帖子 但似乎找不到下一步 这是我到目前为止所做的 导入 20x20 csv 的排名 每列包含从 1 到 20 的每个整数的一个实例 因此所有 colSum 均为
  • Android 正则表达式模式 Incode UTF-8

    我正在 android 中尝试使用 matcher group 1 捕获 代码 String html doc html toString Pattern p Pattern compile is caption is is is Patt
  • 使用某些纸/芯元件时 dartium 中的警告

    我正在尝试使用 paper tabs paper tab 和 core pages 元素 但 dartium 显示了一堆警告 例如 from html5lib Unexpected non space characters Expected
  • 如何修复防伪令牌适用于用户“”,但当前用户是“xxxx”错误

    提供的防伪令牌适用于用户 但当前用户是 xxxx 我已经遵循了所有可能的解决方案来消除此错误 但没有成功 这是场景 我在浏览器选项卡 A 选项卡 B 中打开了 2 个单独的登录选项卡 1 我在选项卡 A 中登录我的网站 2 然后尝试登录Ta
  • VSTS 发布拉取请求构建触发器

    我的团队正在使用 VSTS 构建和发布机制 结合拉取请求分支安全设置 以便只有在拉取请求完成后才能合并代码 不过 我们遇到了一些奇怪的事情 因为当创建拉取请求 并且生成构建来证明提交 时 由拉取请求触发的此构建的完成也会间接触发发布 因为我
  • 检测 Silverlight 中的 DataContext 更改

    我有一个由多个部分组成的问题 1 Silverlight 不公开 DataContextChanged 事件是否有充分的理由 如果微软的某个人做出改变 似乎可以避免很多麻烦internal to public在 FrameworkEleme
  • C++ 右值引用和移动语义

    C 03 存在可能隐式发生不必要的副本的问题 为此 C 11引入了rvalue references and move semantics 现在我的问题是 这种不必要的复制问题是否也存在于 C 和 java 等语言中 或者只是 C 的问题