草庐IT

shared_preferences

全部标签

c++ - 带有标准容器的 std::shared_ptr

我有一个容器shared_ptrs和我将这些对象交给WindowsAPI,稍后我使用原始ptr获得回调。我要找对shared_ptr事后。这可以用shared_ptr干净地完成吗?(不使用shared_from_this())。非常基本的例子:classCFoo{};typedefstd::shared_ptrCFooPtr;typedefstd::setCFooSet;externCFooSetm_gSet;voidSomeWindowsCallBack(CFoo*pRawPtr){m_gSet.erase(pRawPtr);}我知道这可以用intrusive_ptr来完成很容易,但

c++ - 如何重新分配 boost shared_ptr

我有两个Boostshared_ptrshared_ptrA(newX);shared_ptrB(newX);第三个指针最初指向与A相同的X。shared_ptrC=A;更改C使其指向与B相同的X的正确方法是什么?C=B; 最佳答案 EdChm是对的。我做了一个小测试程序来明确它。它使用C++11,但可以轻松转置。#include#includeintmain(){std::shared_ptrA(newint(1));//createsasharedpointerpointingtoanint.Soheunderlyinginti

CMake Error at /usr/share/cmake-3.10/Modules/CMakeFindDependencyMacro.cmake:48 (find_package):

问题:CMakeErrorat/usr/share/cmake-3.10/Modules/CMakeFindDependencyMacro.cmake:48(find_package): Foundpackageconfigurationfile:  /home/wl/anaconda3/lib/cmake/Qt5WebKit/Qt5WebKitConfig.cmake butitsetQt5WebKit_FOUNDtoFALSEsopackage"Qt5WebKit"isconsideredto beNOTFOUND. Reasongivenbypackage: Qt5WebKitcould

c++ - 模板别名 shared_ptr 和 unique_ptr 时是否有任何陷阱或限制?

为了减少输入类似内容的简单原因:std::shared_ptr;std::unique_ptr;每次想使用智能指针的时候,我就想到了使用模板别名:templateusingsptr=std::shared_ptr;templateusinguptr=std::unique_ptr;所以我可以像这样使用它们:sptr;uptr;假设我在自己的命名空间中保护它们,以这种方式使用带有shared/unique_ptr的模板别名是否有任何陷阱或限制?我会不会做一些我可以用直接模板语法做而我不能用别名做的事情?由于其他原因,这是一个坏主意吗? 最佳答案

c++ - `std::shared_ptr` 的智能指针模拟,带有用于将回调绑定(bind)到引用计数修改事件的 API,例如释放/保留……这是一回事吗?

我需要一个智能指针结构-类似于std::shared_ptr-它为我提供了某种带有公开Hook的API,回调到引用计数修改事件(例如释放/保留,又名refcout增量/减量)可以绑定(bind)。我要么想自己实现,要么使用现成的东西,如果它存在的话。比如,我希望在定义这个假定的shared_ptr-ish智能指针(就像delete-expressions和deleterfunctor分别在shared_ptr和unique_ptr定义中使用。编辑(来self下面的评论)——这就是我想要这个的原因:我目前有一个Image类模板,在它的核心,有一个std::shared_ptr持有一个(可

c++ - std::shared_ptr 预分配内存

我想在一个堆请求(如std::make_shared)中为shared_ptr的控制block和value_type预分配内存,但是不要立即在其中构造任何对象。当我实际需要构造对象时,使用放置new。可能吗?std::make_shared或std::allocate_shared似乎都无法解决我的问题。 最佳答案 我建议创建延迟初始化包装类,它本身包含足够的内存供您稍后要初始化的对象使用。这个包装器甚至可以有特殊的方法来在析构函数中调用placementnew和delete初始化对象。

c++ - 如何从以 shared_ptr 为键的 unordered_set 中获取基于 raw_ptr 的元素

我想知道是否有办法根据unordered_set的原始指针检索一个元素,该元素以shared_ptr为键。unordered_set>sets;automyobj=make_shared();sets.insert(myobj);//Findtheelementmyobjsets.find(myobj);//Howtofindtheelementbasedontheunderlyingrawpointer?sets.find(my.obj.get());(my.obj.get())); 最佳答案 要仅使用底层原始指针查找您要查找的内

c++ - 让 shared_ptr 成员破坏 CopyConstructible 契约吗?

我刚刚在codereview争论过其中声明具有std::shared_ptr成员的类会破坏CopyConstructible契约(Contract),特别是:ThefollowingexpressionsmustbevalidandhavetheirspecifiedeffectsTu=v;Thevalueofvisunchanged原因是复制会通过增加shared_ptr的引用计数来更改源对象,但我的反对意见是引用计数与shared_ptr。更改引用计数是一种副作用,但引用并未说明禁止在被复制的对象之外产生副作用。但我不是语言律师,所以我可能是错的。根据C++标准,什么是正确的?

c++ - std::allocate_shared,允许从自定义分配器和单次分配中分配共享指针引用计数

Makeshared使用引用计数和对象的单一分配提高性能,是否可以将自定义分配器与std::allocate_shared一起使用并且仍然有一个分配,根据我写的测试代码它没有发生:sample我知道boost::intrusive,但它有额外的代码需要编写并且可能出错 最佳答案 在一些调试的帮助下发现std::allocate_shared做了预期的事情,它允许你只为你的对象和引用计数器进行一次分配。下面是更正后的代码:allocateshared此处operatornew对std::make_shared和std::allocat

c++ - CMake Find_Package(PythonLibs): Does CMake give a preference to dynamic or static libraries?

当我运行FindPackage(PythonLibs)时,它首先找到静态python库python3.5m.a,而不是python3.5m.so。这是CMake的预期行为吗?我怀疑它不符合CMakebugreport;然而,这个错误报告是在2005年提交的。13年来情况发生了变化。如果共享库有偏好,那么知道为什么CMake会找到静态库而不是共享库吗?我已经通过使用SET()命令告诉CMake正确的库在哪里用于我自己的构建来解决构建问题。我正在寻找一个可以更好地理解CMake在这种情况下的行为的答案,因为我正在尝试解决不同的problem,并在共享库中找到static对我来说似乎很奇怪。