草庐IT

my_shared_lib

全部标签

c++ - 使用值为 std::shared_ptr 的映射是否是具有多索引类列表的良好设计选择?

问题很简单:我们有一个类(class),成员有a,b,c,d...我们希望能够通过为a或b或c提供当前值来快速搜索(键是一个成员的值)并使用新值更新类列表...我想拥有一堆std::map>.1)这是个好主意吗?2)boostmultiindex是否在各个方面都优于这个手工制作的解决方案?出于简单性/性能方面的原因,PSSQL是不可能的。 最佳答案 BoostMultiIndex可能有一个明显的缺点,即它会尝试在集合的每次突变后使所有索引保持最新。如果您的数据加载阶段包含许多单独的写入,这可能会造成很大的性能损失。BoostMult

c++ - 将 shared_ptr 与多继承类一起使用

我有一个类继承了两个接口(interface):classMulti:publicIFoo,publicIBar{public:virtual~Multi();//FoopartvirtualvoidfooMethod();//...//BarpartvirtualvoidbarMethod();//...};不幸的是,这个类不能分解为每个接口(interface)的两个单独的类。事实上,在类实现中,这些实体(Foo和Bar)是紧密耦合的,但将来它们可能会分开。另一个类想要使用Multi类,有一个指向IFoo和IBar的指针:classClientClass{public:Client

c++ - 从 int 到 shared_ptr 的隐式转换

考虑下面的代码:#include#includevoidf(std::shared_ptrsp){}templateautocall_f(FuncTypef,PtrTypep)->decltype(f(p)){returnf(p);}intmain(){f(0);//doesn'tworkforanyotherint!=0,thanks@Rupesh//call_f(f,0);//error,cannotconvertinttoshared_ptr}在main()中的第一行,整数0转换为std::shared_ptr和电话f(0)成功没有任何问题。但是,使用模板调用函数会使情况有所不同

c++ - std::weak_ptr:锁或 shared_ptr 构造函数?

似乎有两种方法可以暂时获取weak_ptr指向的资源的所有权:使用lock()将weak_ptr传递给shared_ptr构造函数这两者都会产生一个shared_ptr,如果weak_ptr为空并且锁返回一个nullptrshared_ptr构造函数抛出异常。所以问题是:什么时候应该使用一个或另一个?是否有与此相关的一般准则或最佳做法? 最佳答案 复制自http://en.cppreference.com/w/cpp/memory/weak_ptr/lockBoththisfunctionandtheconstructorofstd

c++ - 将对象传递给期望 shared_ptr 的函数而不实际共享所有权

首先,我确实意识到这完全违背了shared_ptr的目的。我正在处理一些库代码,其中ParticleSystem的实例希望在构造期间将shared_ptr传递给它们以设置用于每个粒子的纹理。问题是,我已经以我的纹理具有具体所有权(如果这是正确的术语)的方式构建了我的程序的其余部分-TextureCache拥有所有纹理。所以我需要一种方法来使用这个ParticleSystem类,而不允许它删除我的纹理。如果我只是创建一个像ParticleSystem(std::shared_ptr&myTexture)这样的新实例然后它会在纹理被破坏时尝试破坏它(这是一个不需要的和无效的操作,因为我的纹

c++ - Visual Studio 错误 : LNK1104: cannot open file 'kernel32.lib' - only in WP8 projects/Win32 builds

我最近遇到了这个问题(几天前一切正常):VisualStudio2012开始拒绝构建原生WP8项目。今天,我从模板“WindowsPhoneDirect3D应用程序(仅限native)”创建了新解决方案,以检查WP是否正确支持我新创建的DLL。我尝试编译这个项目,首先没有任何更改或额外的引用-VS生成的纯代码。但是,它因给定错误而失败。我很清楚这是什么意思,可能的原因是什么,但是我不明白,在这种情况下它是从哪里来的。奇怪的事情:这只发生在“Win32”配置中,ARM编译正常:1>------Buildstarted:Project:PhoneDirect3DApp,Configurat

您如何更改WordPress管理工具栏中的My-Account标题“ Howdy”文本

有人可以解释为什么下面的代码不会更改my-acount节点?我尝试了每个教程和指南的变体,我可以找到WordPress4.8中的“​​my-account”节点文本,而我似乎无能为力。我尝试了2个不同主题的2个不同站点上的这些站点(包括下面的代码)的代码变化,并且行为是相同的-管理工具栏中的目标节点没有更改。我留下了一个评论的变体,该变化应该简单地替换功能脚下的节点,以防有人告诉我为什么不起作用。我已经搜寻了WordPress法典,也试图解决这个问题,但无济于事。我还尝试将优先级设置为999,但这也没有影响。/*---changethegreetingfortheadminbar---*/ad

c++ - shared_ptr 的基本语法问题

我是shared_ptr的新手。我有几个关于C++0xshared_ptr语法的问题如下://firstquestionshared_ptrptr(newclassA());//worksshared_ptrptr;ptr=??//howcouldIcreateanewobjecttoassignittosharedpointer?//secondquestionshared_ptrptr2;//couldbetestedforNULLfromtheifstatementbelowshared_ptrptr3(newclassA());ptr3=??//howcouldIassignN

c++ - boost::ptr_container 和 std::vector<shared_ptr>

看完timdaysanswer至thisquestion我很好奇boost::ptr_container之间的区别和一个std::vector.我的印象是aboost::ptr_containerhadownershipoverthepointersgiventoit,并且在释放时将调用它包含的所有指针的析构函数,而不管对其居民的其他引用。这与std::vector的目的相反,如果引用计数为0,释放后只会释放指针本身?如果是这种情况(我假设不是),为什么甚至Boost文档示例comparethetwo好像它们的目的相似,为什么timday的回答会提出boost::ptr_contain

c++ - OpenMP shared vs. firstprivate performancewise

我在类方法中有一个#pragmaompparallelfor循环。每个线程只读访问很少的方法局部变量,很少调用私有(private)数据和方法的参数。所有这些都在shared子句中声明。我的问题:性能方面应该没有任何区别声明这些变量shared或firstprivate。对吧?如果我不小心让变量不共享相同的缓存行,是否也是如此?如果其中一个共享变量是一个指针,并且在线程内我通过它读取一个值,是否存在像普通循环中那样的别名问题?明天我将尝试分析我的代码。同时感谢您的建议! 最佳答案 嗯,它们不是一回事。使用shared,它们在所有线程