草庐IT

unique_with_zero

全部标签

c++ - 防止对 std::unique_ptr 的不安全取消引用

摘自cppcon2015的幻灯片:unique_ptrf(){autoa=make_unique();returna;}//Whydoesthisevencompile?constA&dangling=*f();//BOOM!!!use(dangling);我的问题是:对于*this的右值引用,这可以解决吗?我在cppreference的规范中看到:typenamestd::add_lvalue_reference::typeoperator*()const;问题:不允许operator*用于右值unique_ptr并且只对左值unique_ptr取消引用有效吗?仍然有有效的用例来保持

c++ - 使用带有 std::unique_ptr 的抽象删除器

我想要一个提供一些创建方法的运行时界面。这些方法返回unique_ptr,并且我想通过创建类启用自定义删除。问题是我绝对不希望接口(interface)直接提供这些方法——它们应该只在销毁unique_ptr时可用。.现在,我想我可以使用std::unique_ptr>,但我真的不想这样做,因为我根本不需要那种抽象级别,而且我不想支付堆分配费用。有什么建议吗? 最佳答案 我不太清楚您的规范,但您是否考虑过unique_ptr?这是一种非常灵活的类型,具有动态删除器的许多特性。如果这不是您想要的,您可以尝试以下方法:classimpl

c++ - 错误 : argument of type char* is incompatible with parameter of type LPCWSTR

#include#includeusingnamespacestd;intmain(){char*file="d:/tester";WIN32_FIND_DATAFindFileData;HANDLEhFind;hFind=FindFirstFile(file,&FindFileData);//lineoferrorsaysargumentoftypechar*isincompatiblewithparameteroftypeLPCWSTR}我无法理解错误。错误是什么以及如何解决错误?我正在制作一个控制台应用程序,需要检查目录中是否有文件。 最佳答案

c++ - 使用 unique_ptr<> 实现列表?

据我了解,unique_ptr表示专有所有权。单向链表似乎适合这种情况,每个节点都拥有下一个节点,例如(伪代码警报)classnode{public:unique_ptrnext;intvalue;};但我不明白如何执行像遍历列表这样的操作,我习惯这样做here=here->next;如何使用unique_ptr实现数据结构?它们是这项工作的正确工具吗? 最佳答案 当你遍历节点时,你不需要拥有节点指针,这意味着here=here->next;如果这里是unique_ptr则不正确。拥有一个对象意味着“对其生死负责”,这意味着所有者是

【读点论文】LayoutLMv3: Pre-training for Document AI with Unified Text and Image Masking将BERT的训练思路放在图像+文本上

LayoutLMv3:Pre-trainingforDocumentAIwithUnifiedTextandImageMaskingABSTRACT自监督预训练技术在文档人工智能方面取得了显着的进步。大多数多模态预训练模型使用掩码语言建模目标来学习文本模态的双向表示,但它们在图像模态的预训练目标上有所不同。这种差异增加了多模态表示学习的难度。在本文中,我们提出LayoutLMv3来通过统一的文本和图像掩码来预训练文档AI的多模态Transformer。此外,LayoutLMv3还使用单词补丁对齐目标进行了预训练,通过预测文本单词的相应图像补丁是否被屏蔽来学习跨模态对齐。简单的统一架构和训练目标

c++ - 无序集 : remove with move

在c++11中,std::unordered_set容器提供插入重载和新函数emplace,因此它可以与不可复制构造的键一起使用,例如std::unique_ptr。当您想删除其中一个key时会发生什么?autotemp=std::move(*some_iterator)有效吗?是否有一些函数可以让我们同时删除一个元素并将其move到临时文件中?编辑:我试着让它简短​​、甜美和简单,但要更清楚:是否有迭代器适配器(可能是move_iterator?)可以让我从容器中move元素并删除该迭代器?如果不是,为什么不呢?future的c++不应该包含这种接口(interface)吗?情况似乎

c++ - Qt 中的 Objective-C with Mavericks

我一直在Qt中混合使用Objective-C和C++,没有任何问题;在需要时使用.mm文件。将我的构建机器升级到Mavericks后,我最初注意到缺少框架header,因此安装了XCode命令行工具,解决了这个问题。现在,我在编译Objective-C文件时遇到问题,错误提示框架中的代码。例如:-System/Library/Frameworks/Foundation.framework/Versions/C/Headers/NSUserNotification.h:16:44:error:missing','betweenenumeratorsNSUserNotificationAc

【AI作画】使用DiffusionBee with stable-diffusion在mac M1平台玩AI作画

DiffusionBee是一个完全免费、离线的工具。它简洁易用,你只需输入一些标签或文本描述,它就能生成艺术图像。DiffusionBee下载地址运行DiffusionBee的硬性要求:MacOS系统版本必须在12.3及以上DBe安装完成后,去C站挑选自己喜欢的图画风格,下载对应的模型,然后将模型添加进去,如何添加?C站传送门1.点击Model2.点击最底部AddNewModel,进入Setting页面后点击蓝色的AddNewModel按钮3.选中你已下载好的本地模型,本次演示使用toonyou_beta3.safetensors模型4.填写Tag或Prompt即可进行AI作画,本次演示使用以

c++ - unique_ptr 不在编译器资源管理器中生成删除指令?

我一直在研究CompilerExplorer最近。我加载了其中一个采用指针参数的示例,并将其更改为采用unique_ptr参数。但我注意到在输出程序集中,明显没有对operatordelete的调用。我很好奇是否有人知道为什么。这是您可以粘贴到资源管理器中的示例。确保同时将-O3放入编译器选项中。#includeusingstd::unique_ptr;voidmaxArray(unique_ptrx,unique_ptry){for(inti=0;ix[i])x[i]=y[i];}}编辑:同样为了比较,如果我改为粘贴来自cppreference的代码示例之一,那么我会在输出中获取运算

c++ - 将 unique_ptr 从一个集合移动到另一个集合

我似乎无法弄清楚并尝试了以下建议:Move`unique_ptr`sbetweensetshowtomoveanstd::unique_ptrfromoneSTLcontainertoanother?我有两个包含唯一指针的集合:std::set>s1,s2;指针当然是唯一的,但some_type的值可能是也可能不是,所以在将s2连接到s1之后,s1的大小可能与|s1+s2|相同或一样大。看来我应该能够做到这一点:move(s2.begin(),s2.end(),inserter(s1,s1.end()));但这在clang++3.8/g++5.4中失败了。这里缺少什么?