所以,我做了一些谷歌搜索,试图找出是否有一些最好的智能指针来处理这个问题,但我还没有找到一个好的选择。
struct Car
{
int m_doors;
int m_headlights;
//etc..
}
可以说我有一些类汽车。我还有一个std::map<int carkey, Car*>
就是JunkYard。
Car* 可以由某个 Driver 添加到 JunkYard,Driver 自己新建了 Car,但司机立即失去了 Car* 的所有责任。
我希望垃圾场对其所有汽车负责,人们可以访问垃圾场中的汽车以移除零件并从汽车中取出废金属,或者可以压碎但垃圾场永远摧毁它。
一天结束时,垃圾场会摧毁所有的汽车并关闭。
--
A)如果这是一个多线程应用程序,其中驱动程序可以同时访问汽车,而垃圾场可以摧毁汽车,我认为 shared_ptr 可能是最好的?不过,这是矫枉过正吗?其他线程可以访问汽车,但他们永远不会长期拥有它,它必须始终属于垃圾场。
B)如果这是单线程的,那么最好的选择是什么-假设它仍然是 map< some_smart_car_ptr> 。我想让容器自己删除汽车。例如调用 map.erase(...) 应该删除指针以及将其从地图中删除。