gpt4 book ai didi

c++ - std::unordered_map 带有用于自动销毁条目的共享指针

转载 作者:行者123 更新时间:2023-11-28 00:26:47 28 4
gpt4 key购买 nike

我有一个 unordered_map<int, custom_object* >并有各种共享指针指向 unordered_map 中的每个条目.这个想法是这样的,一旦所有共享指针都被破坏,条目将从 unordered_map 中删除。 . custom_object当前包含 key ,以便它可以从 unordered_map 中删除相应的条目销毁后。我想要一个更优雅的设计,也许实现一个 unordered_map<int, shared_ptr<custom_object>>反而。对此有什么想法吗?

最佳答案

您可以为 shared_ptr 使用自定义删除器来删除对象并将其从 map 中删除:

class custom_object_deleter
{
public:
custom_object_deleter(unordered_map<int, custom_object*>* map) :
map(map)
{
}

void operator()(custom_object* object)
{
// Remove object from map.
delete object;
}

private:
unordered_map<int, custom_object*>* map
};

然后当您创建一个 custom_object 时,请执行以下操作:

shared_ptr<custom_object> my_custom_object(new custom_object, custom_object_deleter(&map));

抱歉,我只是快速地完成了它,还没有测试它是否存在编译错误...

但是,这仍然不是一个非常优雅的解决方案。您可能想退后一步,检查需要这样做的设计是否真的是最好的(也是最简单的!)设计。

关于c++ - std::unordered_map 带有用于自动销毁条目的共享指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24644361/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com