c++ unordered_set with shared_ptr 搜索原始指针

标签 c++ unordered-set

我有一个以 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/

相关文章:

c++ - std::string::substr 返回的对象的生命周期

c++ - 将python脚本添加到c++项目

c++ - 如何为用户定义的类型专门化 std::hash<T>?

c++ - 在 std::unordered_set<std::unique_ptr> (C++20) 中找到一个指针 T*

c++ - unordered_set 的散列自定义指针类型

c++ - 了解 GL_SHADER_STORAGE_BLOCK 绑定(bind)

c++ - 如何使用 C++ 在 linux 终端中显示 unicode 字符?

c++ - 为什么 unordered_set 不提供数组访问运算符

c++ - 如果在 foreach 循环之后立即爆发,修改 unordered_set 是否定义明确?

c++ - Qt 5.3 全屏问题