0
我有一個unordered_map<int, custom_object* >
並有各種共享指針指向unordered_map
中的每個條目。這個想法是這樣的,一旦所有的共享指針被破壞,該條目將被從unordered_map
中刪除。 custom_object
當前包含密鑰,以便它可以在銷燬時從unordered_map
中刪除相應的條目。我想有一個更優雅的設計,也許實現unordered_map<int, shared_ptr<custom_object>>
。對此有何想法?std :: unordered_map與共享指針自動銷燬條目
您可以使用Boost Intrusive的auto_unlink功能。你必須切換到基於樹的(有序)映射,否則它可能會做你所需要的。更具體的細節將有所幫助,也許一些示例代碼完全顯示您的類型。 –
這是朝正確方向邁出的一步。但是,您必須找出另一個從'unordered_map'中移除'custom_object *'的觸發器。你用來將它們從'unordered_map'中移除的觸發器將會消失。 –
在你的unordered_map <>中使用weak_ptr <>。當一個條目的最後一個shared_ptr <>消失時,weak_ptr <>會告訴你該對象已經消失。缺點是物品停留在地圖上。 –