草庐IT

cloning_ptr

全部标签

ruby - 为什么要在卡住的对象上使用 Object#clone?

好吧,出于好奇,您是否有任何理由想要使用Object#clone在卡住的物体上?据我了解,使用Object#dup的唯一原因和Object#clone是获取现有对象的第二个副本,以便您可以在不更改原始对象的情况下对其进行修改。但是Object#clone复制对象的卡住状态,并且您不能修改卡住对象,那么您是否有任何理由想要在该上下文中使用它?还有一个相关的说明,如果没有用例,有什么原因吗?f="Somestring"f.frozen?#=>falsef.freezef.frozen?#=>truef2=f.clonef2.frozen?#=>truef2.equal?f#=>false#

c++ - 标准 <memory> 文件中 boost::shared_ptr 和 std::shared_ptr 之间的区别

我想知道boost::shared_ptr之间是否有任何区别和std::shared_ptr在标准中找到文件。 最佳答案 std::shared_ptr是tr1::shared_ptr的C++0x形式,boost的boost::shared_ptr应该表现一样。然而,std::shared_ptr,在符合C++0x标准的实现中,应该/可能对shared_ptr类有更方便的行为,如所述在以下链接中:Differencesbetweendifferentflavoursofshared_ptrhttp://en.wikipedia.or

c++ - 标准 <memory> 文件中 boost::shared_ptr 和 std::shared_ptr 之间的区别

我想知道boost::shared_ptr之间是否有任何区别和std::shared_ptr在标准中找到文件。 最佳答案 std::shared_ptr是tr1::shared_ptr的C++0x形式,boost的boost::shared_ptr应该表现一样。然而,std::shared_ptr,在符合C++0x标准的实现中,应该/可能对shared_ptr类有更方便的行为,如所述在以下链接中:Differencesbetweendifferentflavoursofshared_ptrhttp://en.wikipedia.or

Ruby:如何使用 dup/clone 来不改变原始实例变量?

学习Ruby,我正在创建一个Battleship项目,我有以下代码作为我正在创建的类“Board”的实例方法。defhidden_ships_gridhidden_s_grid=@grid.duphidden_s_grid.each_with_indexdo|sub_array,i|sub_array.each_with_indexdo|el,j|#position=[i,j]hidden_s_grid[i][j]=:Nifel==:Sendendend基本上,此方法会创建另一个@grid变量实例,该实例会用:N代替每个:S符号。RSPEC有两个要求:1)“应该返回一个二维数组,表示其

c++ - 在 map 中使用自定义删除器存储 unique_ptr

为什么这不起作用?#include#includevoiddeleter(int*i){deletei;}std::map>m;voidfoo(int*i){m[0]=std::unique_ptr(i,&deleter);}查看无法理解的编译错误https://godbolt.org/z/Uhp9NO.Infileincludedfrom:1:Infileincludedfrom/opt/compiler-explorer/gcc-8.2.0/lib/gcc/x86_64-linux-gnu/8.2.0/../../../../include/c++/8.2.0/map:61:Inf

c++ - 在 map 中使用自定义删除器存储 unique_ptr

为什么这不起作用?#include#includevoiddeleter(int*i){deletei;}std::map>m;voidfoo(int*i){m[0]=std::unique_ptr(i,&deleter);}查看无法理解的编译错误https://godbolt.org/z/Uhp9NO.Infileincludedfrom:1:Infileincludedfrom/opt/compiler-explorer/gcc-8.2.0/lib/gcc/x86_64-linux-gnu/8.2.0/../../../../include/c++/8.2.0/map:61:Inf

c++ - 如果 unique_ptr 需要存储删除器,它怎么能没有开销?

首先看看C++Primer说的unique_ptr和shared_ptr:16.1.6美元。效率和灵activeWecanbecertainthatshared_ptrdoesnotholdthedeleterasadirectmember,becausethetypeofthedeleterisn’tknownuntilruntime.Becausethetypeofthedeleterispartofthetypeofaunique_ptr,thetypeofthedeletermemberisknownatcompiletime.Thedeletercanbestoreddire

c++ - 如果 unique_ptr 需要存储删除器,它怎么能没有开销?

首先看看C++Primer说的unique_ptr和shared_ptr:16.1.6美元。效率和灵activeWecanbecertainthatshared_ptrdoesnotholdthedeleterasadirectmember,becausethetypeofthedeleterisn’tknownuntilruntime.Becausethetypeofthedeleterispartofthetypeofaunique_ptr,thetypeofthedeletermemberisknownatcompiletime.Thedeletercanbestoreddire

c++ - weak_ptr 的性能损失是多少?

我目前正在为游戏设计一个对象结构,在我的例子中,最自然的组织变成了一棵树。作为智能指针的忠实粉丝,我只使用shared_ptr的。然而,在这种情况下,树中的子节点需要访问它的父节点(例如——map上的生物需要能够访问map数据——因此他们的父节点的数据。拥有的方向当然是map拥有它的存在,因此持有指向它们的共享指针。然而,为了从一个存在中访问map数据,我们需要一个指向父级的指针——智能指针的方式是使用一个引用,即weak_ptr。但是,我曾经读到锁定weak_ptr是一项昂贵的操作——也许这不再是真的了——但考虑到weak_ptr会经常被锁定,我担心这种设计注定性能不佳。因此问题:锁

c++ - weak_ptr 的性能损失是多少?

我目前正在为游戏设计一个对象结构,在我的例子中,最自然的组织变成了一棵树。作为智能指针的忠实粉丝,我只使用shared_ptr的。然而,在这种情况下,树中的子节点需要访问它的父节点(例如——map上的生物需要能够访问map数据——因此他们的父节点的数据。拥有的方向当然是map拥有它的存在,因此持有指向它们的共享指针。然而,为了从一个存在中访问map数据,我们需要一个指向父级的指针——智能指针的方式是使用一个引用,即weak_ptr。但是,我曾经读到锁定weak_ptr是一项昂贵的操作——也许这不再是真的了——但考虑到weak_ptr会经常被锁定,我担心这种设计注定性能不佳。因此问题:锁