我想在priority_queue
和unordered_map
中存储对象。做这样的事情有最好的做法吗?我考虑将对象存储在一个单独的容器中(比如array
),然后将指针放到另外两个容器中。
所以,我想知道是否还没有最好的方法来做到这一点?
答案 0 :(得分:3)
如果您希望在2个地方出现1件事,您已经看到必须将对象(某种类型)存储到对象中。虽然你曾经使用指针,但今天我们有shared_ptr。
这包装了指针,因此您不必管理生命周期所有权 - 只有当shared_ptr的引用计数降为0时,指针才会被删除,即当持有shared_ptr的每个人都放弃它时。您可以将shared_ptr对象用作实际对象,以便在容器中轻松管理。
如果您没有C ++ 11编译器,则可以使用boost version(在向量和集合中存储共享_ptr对象的example附带)