std::auto_ptr 到 std::unique_ptr

2023-11-30

随着新标准的到来(以及某些编译器中已经可用的部分),新类型std::unique_ptr应该是替代品std::auto_ptr.

它们的用法是否完全重叠(这样我可以在我的代码上进行全局查找/替换(不是我会这样做,但如果我这样做))或者我应该意识到一些在阅读文档时不明显的差异?

另外,如果它是直接替换,为什么要给它一个新名称而不是仅仅改进std::auto_ptr?


您无法进行全局查找/替换,因为您可以复制auto_ptr(后果已知),但是unique_ptr只能移动。任何看起来像的东西

std::auto_ptr<int> p(new int);
std::auto_ptr<int> p2 = p; 

至少必须变成这样

std::unique_ptr<int> p(new int);
std::unique_ptr<int> p2 = std::move(p);

至于其他的区别,unique_ptr可以正确处理数组(它会调用delete[], while auto_ptr将尝试致电delete.

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

std::auto_ptr 到 std::unique_ptr 的相关文章

随机推荐

  • 使用 crontab/cron 安排 python 3.6 脚本

    我只是在我的 Centos 开发服务器上设置一个 crontab job 在我的 crontab 中 我有以下内容 忽略时间设置 这是在 UTC 服务器时间 15 32 左右添加的 只是为了获得下一次计划运行 34 15 cd welcom
  • 变量从 PHP 传递到 Smarty 和 Javascript

    我在 php 中有一个对象 它像 smarty gt assign o o 一样传递给 Smarty 然后我需要在 JavaScript 中访问该对象及其属性 在 tpl 中没有任何 javascript 的情况下 你如何做到这一点 我希望
  • 如何在一个QTableView中显示多个QSqlTableModel的内容?

    我有一个MySql表 我们称之为x CREATE TABLE x Id int unsigned NOT NULL PRIMARY KEY AUTO INCREMENT A int unsigned NOT NULL B int FOREI
  • python中变量相乘时如何添加空格

    这是我的代码 print Type in another set of words x input print Now type in how many times you want it to appear WHOLE NUMBERS O
  • 如何通过 JavaScript 更改字体大小?

    该代码不起作用 var span document getElementById span span style fontsize 25px span innerHTML String JavaScript 区分大小写 所以 如果你想改变字
  • margin、padding、border 全部为零后还有空间吗?

    我已将边距 填充和边框设置为零 但 Firefox 和 Chrome 中的画布和 div 周围仍然有空间 显然 我不明白如何在 HTML 中紧贴元素 并且将不胜感激您的建议和指示
  • 在 NSString 的情况下,对自动释放对象的周引用不会被释放

    Why temp即使对象被声明为 也不会被释放并设置为 nil week 但如果 Person 反对 它会按预期工作 做NSString对象内存生命周期的处理方式不同 如何 interface Person NSObject propert
  • mysql 按问题排序

    如果我有这样的查询 SELECT FROM table WHERE id IN 3 6 1 8 9 这个 ids 数组是在 php 中动态构建的 并且顺序对我来说很重要 my array array 3 6 1 8 9 如何按元素在数组中出
  • C# 中的全局 Keyhook

    我想制作一个新的应用程序 我可以通过外部 GUI 的按键进行控制 如果按下该键 首先应该有一个文本字段发生变化 最后我想让计时器在按键时启动 我用谷歌搜索并访问了 Stack Overflow 但没有找到任何可以真正帮助我解决问题的方法 我
  • d3 径向条形图中的标签放置

    在我的 d3 径向图表中 我试图将标签文本置于段弧上方 而不是保留在外圆之外 Fiddle var width 360 height 300 barHeight height 2 40 var formatNumber d3 format
  • 带样条+日期时间对象的平滑线不起作用

    我一直在努力让情节更加流畅 就像完成的一样here 但我的 X 是与 linspace 不兼容的日期时间对象 我将 X 转换为 matplotlib 日期 Xnew matplotlib dates date2num X X smooth
  • Android 上的 Google 收藏集

    有人在 Android 上使用过 Multimaps 吗 Guava 在 Android 上按原样运行 您遇到了什么问题 使用已发布的 JAR 而不是 Guava 源 与往常一样 您应该在构建过程中使用 ProGuard 来缩小最终二进制文
  • 我们可以将 SQL 从 S3 存储桶导入到 AWS ec2(实例)吗?

    我正在尝试将 SQL 文件从 S3 存储桶导入到 EC2 实例 SQL 文件是可公开访问的 并且在实例中安装的 mysql 客户端的帮助下 我正在执行以下命令 mysql gt source https s3 ap southeast 1
  • 有没有办法给一个节点添加多个标签?

    假设我正在创建一个关于食物的数据库 在其中我想添加木豆 它既是咖喱又是扁豆 SELECT FROM cypher menu CREATE LENTIL CURRY name Dal AS dal agtype 2023 02 20 06 4
  • TestNG错误-java.lang.NoSuchMethodError: org.testng.TestRunner.addListener(Ljava/lang/Object;)V

    我安装的testNG版本是 6 9 11 我的pom xml有 6 14 3 Eclipse版本neon 4 6 3 当我通过 TestNG 运行课程时 出现以下错误 有人可以帮我解决这个问题吗 java lang NoSuchMethod
  • 如果任何函数并行失败,则停止 bash

    我有一个 BASH 可以在我的 BASH 中并行运行 3 个函数 functionA my command echo ERROR gt gt LOG FILE exit 1 functionB my command echo ERROR g
  • 如何自定义@FeignClient Expander来转换参数?

    Feign默认扩展器转换参数 final class ToStringExpander implements Expander Override public String expand Object value return value
  • 如何在 Picturebox C# 中添加标签透明度?

    我在其中创建一个程序可以添加标签和图片框 所有控件都必须是面板的子控件 我使用这样的代码 panel2 Controls Add picturebox1 panel2 Controls Add label1 是的 问题是我想要在图片框上贴上
  • java控制台输入

    通过控制台输入的任何数据类型 就像我使用 BufferedReader 类所做的那样 是 String 之后我们将其转换为所需的数据类型 如 Inter parseInt 表示整数 但是在 C 中 我们可以接受任何输入原始数据类型 而在ja
  • std::auto_ptr 到 std::unique_ptr

    随着新标准的到来 以及某些编译器中已经可用的部分 新类型std unique ptr应该是替代品std auto ptr 它们的用法是否完全重叠 这样我可以在我的代码上进行全局查找 替换 不是我会这样做 但如果我这样做 或者我应该意识到一些