移动语义和原始类型

2023-12-23

示例代码:

int main()
{
    std::vector<int> v1{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    std::cout << "Printing v1" << std::endl;
    print(v1);
    std::vector<int> v2(std::make_move_iterator(v1.begin()),
                         std::make_move_iterator(v1.end()));
    std::cout << "Printing v1" << std::endl;
    print(v1);
    std::cout << "Printing v2" << std::endl;
    print(v2);

    std::vector<std::string> v3{"some", "stuff", "to",
                        "put", "in", "the", "strings"};
    std::cout << "Printing v3" << std::endl;
    print(v3);
    std::vector<std::string> v4(std::make_move_iterator(v3.begin()),
                                 std::make_move_iterator(v3.end()));
    std::cout << "Printing v3" << std::endl;
    print(v3);
    std::cout << "Printing v4" << std::endl;
    print(v4);
}

Output:

Printing v1
1 2 3 4 5 6 7 8 9 10
Printing v1
1 2 3 4 5 6 7 8 9 10
Printing v2
1 2 3 4 5 6 7 8 9 10
Printing v3
some stuff to put in the strings
Printing v3

Printing v4
some stuff to put in the strings

问题

  1. 由于原始类型上的移动操作只是一个副本,我可以假设v1将保持不变,或者即使对于原始类型,状态也未指定?

  2. 我假设原始类型没有移动语义的原因是因为复制同样快甚至更快,这是正确的吗?


  1. 不,如果你想能够假设这一点,你应该复制,而不是移动。

  2. 移动使源对象处于有效但未指定的状态。原始类型do展示移动语义。源对象保持不变这一事实表明复制是实现移动的最快方法。

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

移动语义和原始类型 的相关文章

  • C 编程 - 文件 - fwrite

    我有一个关于编程和文件的问题 while current NULL if current gt Id Doctor 0 current current gt next id doc current gt Id Doctor if curre
  • 为什么 C# Array.BinarySearch 这么快?

    我已经实施了一个很简单用于在整数数组中查找整数的 C 中的 binarySearch 实现 二分查找 static int binarySearch int arr int i int low 0 high arr Length 1 mid
  • GLKit的GLKMatrix“列专业”如何?

    前提A 当谈论线性存储器中的 列主 矩阵时 列被一个接一个地指定 使得存储器中的前 4 个条目对应于矩阵中的第一列 另一方面 行主 矩阵被理解为依次指定行 以便内存中的前 4 个条目指定矩阵的第一行 A GLKMatrix4看起来像这样 u
  • ASP.NET MVC:这个业务逻辑应该放在哪里?

    我正在开发我的第一个真正的 MVC 应用程序 并尝试遵循一般的 OOP 最佳实践 我正在将控制器中的一些简单业务逻辑重构到我的域模型中 我最近一直在阅读一些内容 很明显我应该将逻辑放在域模型实体类中的某个位置 以避免出现 贫血域模型 反模式
  • 为什么当实例化新的游戏对象时,它没有向它们添加标签? [复制]

    这个问题在这里已经有答案了 using System Collections using System Collections Generic using UnityEngine public class Test MonoBehaviou
  • 类模板参数推导 - clang 和 gcc 不同

    下面的代码使用 gcc 编译 但不使用 clang 编译 https godbolt org z ttqGuL template
  • Clang 3.1 + libc++ 编译错误

    我已经构建并安装了 在前缀下 alt LLVM Clang trunk 2012 年 4 月 23 日 在 Ubuntu 12 04 上成功使用 GCC 4 6 然后使用此 Clang 构建的 libc 当我想使用它时我必须同时提供 lc
  • 不同枚举类型的范围和可转换性

    在什么条件下可以从一种枚举类型转换为另一种枚举类型 让我们考虑以下代码 include
  • 带动态元素的 WPF 启动屏幕。如何?

    我是 WPF 新手 我需要一些帮助 我有一个加载缓慢的 WPF 应用程序 因此我显示启动屏幕作为权宜之计 但是 我希望能够在每次运行时更改屏幕 并在文本区域中显示不同的引言 这是一个生产力应用程序 所以我将使用非愚蠢但激励性的引言 当然 如
  • 创建链表而不将节点声明为指针

    我已经在谷歌和一些教科书上搜索了很长一段时间 我似乎无法理解为什么在构建链表时 节点需要是指针 例如 如果我有一个节点定义为 typedef struct Node int value struct Node next Node 为什么为了
  • SolrNet连接说明

    为什么 SolrNet 连接的容器保持静态 这是一个非常大的错误 因为当我们在应用程序中向应用程序发送异步请求时 SolrNet 会表现异常 在 SolrNet 中如何避免这个问题 class P static void M string
  • 控件的命名约定[重复]

    这个问题在这里已经有答案了 Microsoft 在其网站上提供了命名指南 here http msdn microsoft com en us library xzf533w0 VS 71 aspx 我还有 框架设计指南 一书 我找不到有关
  • 链接器错误:已定义

    我尝试在 Microsoft Visual Studio 2012 中编译我的 Visual C 项目 使用 MFC 但出现以下错误 error LNK2005 void cdecl operator new unsigned int 2
  • 如何使用 C# / .Net 将文件列表从 AWS S3 下载到我的设备?

    我希望下载存储在 S3 中的多个图像 但目前如果我只能下载一个就足够了 我有对象路径的信息 当我运行以下代码时 出现此错误 遇到错误 消息 读取对象时 访问被拒绝 我首先做一个亚马逊S3客户端基于我的密钥和访问配置的对象连接到服务器 然后创
  • 为什么编译时浮点计算可能不会得到与运行时计算相同的结果?

    In the speaker mentioned Compile time floating point calculations might not have the same results as runtime calculation
  • cmake 将标头包含到每个源文件中

    其实我有一个简单的问题 但找不到答案 也许你可以给我指一个副本 所以 问题是 是否可以告诉 cmake 指示编译器在每个源文件的开头自动包含一些头文件 这样就不需要放置 include foo h 了 谢谢 CMake 没有针对此特定用例的
  • C# 模拟VolumeMute按下

    我得到以下代码来模拟音量静音按键 DllImport coredll dll SetLastError true static extern void keybd event byte bVk byte bScan int dwFlags
  • 哪种 C 数据类型可以表示 40 位二进制数?

    我需要表示一个40位的二进制数 应该使用哪种 C 数据类型来处理这个问题 如果您使用的是 C99 或 C11 兼容编译器 则使用int least64 t以获得最大的兼容性 或者 如果您想要无符号类型 uint least64 t 这些都定
  • 如何将服务器服务连接到 Dynamics Online

    我正在修改内部管理应用程序以连接到我们的在线托管 Dynamics 2016 实例 根据一些在线教程 我一直在使用OrganizationServiceProxy out of Microsoft Xrm Sdk Client来自 SDK
  • 如何防止用户控件表单在 C# 中处理键盘输入(箭头键)

    我的用户控件包含其他可以选择的控件 我想实现使用箭头键导航子控件的方法 问题是家长控制拦截箭头键并使用它来滚动其视图什么是我想避免的事情 我想自己解决控制内容的导航问题 我如何控制由箭头键引起的标准行为 提前致谢 MTH 这通常是通过重写

随机推荐

  • 可选 isPresent 与 orElse(null)

    我正在将项目中的依赖项更新到 Spring 5 并受到编译错误的轰炸 其中方法定义findOne 已被替换为findById 现在返回一个Optional 如果我错了请纠正我 在重构时 我遇到了多种可以选择采用的方法 因此我希望获得一些关于
  • 如何将图像和文本添加到 QLabel

    我有一个带有 QLabel 的 QHBoxLayout 我试图在 QLabel 中获取图标和窗口标题文本 那可能吗 或者甚至将图标直接添加到 QHBoxLayout 以便放置在窗口标题文本之前 这是我的代码 class MyBar QWid
  • 如何将参数从 CDI 中的另一个类传递给注入的类?

    我是 CDI 新手 试图找到这个问题的解决方案 但是找不到任何解决方案 问题是假设我有一个正在注入的类 A 其中注入了一些值 toPass 现在我想将这个相同的值 toPass 传递给B类 B类是从A类注入的 public class A
  • 将索引(数字 ID)列添加到大型数据框[重复]

    这个问题在这里已经有答案了 我将大型 csv 文件读取到数据框中 csv 文件中的数据来自多个表示用户信息的网站 例如 这里是数据帧的结构 user id number of logins number of images web 001
  • 遇到 java.net.BindException:服务器客户端套接字应用程序上的地址已在使用(绑定失败)

    我在服务器客户端套接字应用程序上遇到 java net BindException 地址已在使用 绑定失败 我正在尝试使用 Youtube 教程作为参考来了解 Java 套接字 我的代码似乎与视频中的所有内容匹配 变量名称除外 但是 当尝试
  • 创建和更新 Zend_Search_Lucene 索引

    我正在使用 Zend Search Lucene 创建文章索引 以便可以在我的网站上搜索它们 每当管理员在管理区域中更新 创建 删除文章时 都会重建索引 config Zend Registry get config cache confi
  • 比较 Python 类型的类型

    我有一个函数接受另一个用类型提示注释的 Python 函数 annotations 我想使用这些提示在运行时进行一些类型检查 问题是来自输入模块的类型类似乎不太容易使用 没有 isinstance 没有 issubclass 所以 我想知道
  • backbone.js:调用 collection.reset() 是否也会删除模型?

    我在主干文档中读到调用collection reset 清除集合 我想知道它是否也会删除模型 或者它们是否继续存在于内存中 如果没有删除它们 是否有一种更简单的方法可以删除集合中的所有模型 而无需迭代模型并调用model remove 你可
  • Powershell 脚本可以在 Powershell 中运行,但不能在 VB.Net 中运行

    我有一个简单的 powershell 脚本来启用 Exchange 中名为 test ps1 的邮箱 这是脚本 添加 pssnapin microsoft exchange management powershell admin 启用邮箱
  • Typescript 的代码覆盖率 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我们刚刚在 Typescript 中启动了一个项目 我们需要获取代码覆盖率数据 我们现有的 JavaS
  • 成功的 MySQL DELETE 返回什么?如何检查DELETE是否成功?

    使用 PHP 我尝试删除一条记录 但我想检查它是否成功 成功后是否返回任何内容DELETE FROM foo where bar stuff 或者 您知道其他方法来检查删除是否成功吗 或者我最好在删除它之前确保该行存在 如果可能的话 我试图
  • Kendo Grid:当行更改时如何从代码更新数据源

    这是我之前几篇关于更新剑道网格数据源的文章的延续 我想做的最后一件事是当用户转到新行时发生这种情况 感谢 Lars 迄今为止提供的令人印象深刻的帮助 我通过检测行更改 碰巧在指令中执行此操作 并回调网格控制器来执行此操作 在网格控制器中我在
  • WSL2 上的 Ubuntu 18.04:“登录失败:尚未授予用户在此计算机上请求的登录类型。”

    重新启动 Windows 计算机后 我在尝试打开 Ubuntu 18 04 WSL2 实例时收到此错误 Logon failure the user has not been granted the requested logon type
  • MongoDB 投影参数在 findOne() 中不起作用

    我试图在 findOne 上使用投影参数从文档 统计信息 中提取单个字段 但它似乎只是返回整个文档 我在 Node js 中使用版本 mongodb 3 4 1 这是文档结构 id 5e563015fa9a1a0134cac3cb user
  • javascript图形库[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个不错的 JavaScript 图形库 它可以处理以下类型的图形 折线图 直方图 散点图 动态图表 我已经尝试过 Google
  • 防止伪元素自行断行

    我有一个链接样式 可以使用以下命令在链接末尾添加 SVG 箭头 after 问题是 当视口改变大小时 有时只有 SVG 会断线 我怎样才能设置它 以便 SVG 总是用最后一个单词来换行 a tag txtbtn font size 1 12
  • PHP预防xss

    Is htmlentitiesPHP 中防止 XSS 的最佳解决方案 我也想允许简单的标签 比如b i a and img 实现这一点的最佳解决方案是什么 我确实考虑过 bbcode 但发现如果没有正确实现我也会遇到 XSS 问题 我应该怎
  • 当我使用 document.execCommand("copy") 时,javascript 换行符不适用

    您好 我正在使用下面的代码构建一个字符串并复制它 但是在粘贴它时的输出中 换行符不适用 function copyToClipboardShipto var temp
  • 在 Orchard 中创建/编辑后清空内容项

    我正在使用在 Orchard 中创建 n to n 关系的指南 ocs orchardproject net Documentation Creating 1 n and n n relations 并进行一些细微的修改 虽然示例代码运行良
  • 移动语义和原始类型

    示例代码 int main std vector