我有一个以 shared_ptrs 作为键的 unordered_set。这在 99% 的情况下工作正常,但在相同的情况下,我需要从类内部搜索集合,我想避免继承 enable_shared_from_this,正因为如此。
我可以/如何通过原始指针搜索 unordered_set 的 shared_ptr。
最佳答案
散列 shared_ptr
散列 get()
并比较 shared_ptr
比较 get()
,所以让我们使用别名构造函数创建一个非拥有的 shared_ptr
:
std::shared_ptr<T> key(std::shared_ptr<T>(),
this /* or whatever pointer you want to search for */);
然后用它搜索 unordered_set
。
与使用空删除器相比,这更便宜,因为它不分配控制 block 。
关于c++ unordered_set with shared_ptr 搜索原始指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37233644/