将对象存储在多个容器中的最佳实践

时间:2014-08-22 12:30:01

标签: c++

我想在priority_queueunordered_map中存储对象。做这样的事情有最好的做法吗?我考虑将对象存储在一个单独的容器中(比如array),然后将指针放到另外两个容器中。

但是,我对此犹豫不决,因为这意味着我必须编写一些额外的比较器来处理容器存储指针而不是实际对象这一事实。此外,还有额外的工作来管理我不想处理的对象的所有权。

所以,我想知道是否还没有最好的方法来做到这一点?

1 个答案:

答案 0 :(得分:3)

如果您希望在2个地方出现1件事,您已经看到必须将对象(某种类型)存储到对象中。虽然你曾经使用指针,但今天我们有shared_ptr

这包装了指针,因此您不必管理生命周期所有权 - 只有当shared_ptr的引用计数降为0时,指针才会被删除,即当持有shared_ptr的每个人都放弃它时。您可以将shared_ptr对象用作实际对象,以便在容器中轻松管理。

如果您没有C ++ 11编译器,则可以使用boost version(在向量和集合中存储共享_ptr对象的example附带)

相关问题