在地图中使用共享指针

时间:2014-01-24 15:10:54

标签: c++ shared-ptr

我正在尝试决定在我的硬件中使用什么是最佳选择。 我有一个地图(我编码),它应该存储整数id作为键,并将名为fan的类的共享指针作为值:

Map<Id, shared_ptr<Fan>> Online_list;

使用shared_ptr<Fan>&或没有引用更好?

我的作业是关于创建像Facebook一样的服务器,粉丝可以在线和离线,所以即时通讯有两个地图,一个叫Online_list,另一个叫Offline_list,所以当风扇断开时,我需要将他从在线列表中删除并将其添加到离线列表中。

2 个答案:

答案 0 :(得分:1)

shared_ptr是一种参考。带内存管理的指针。您可以存储普通shared_ptr,因为内部引用了相同的数据(复制构造函数增量引用计数等)。

答案 1 :(得分:1)

通常最好不要将指针存储在所有中,而只是存储Fan对象的值。拥有two对象的Fan事件真的有意义吗?

但是,假设您的设计是正确的,那么您应该只存储shared_ptr按值。