所以,我已經做了相當多的谷歌搜尋試圖找出是否有一些最好的智能指針來處理這個問題,但我還沒有能夠解決一個好選擇。哪種類型的指針用於擁有指針的集合
struct Car
{
int m_doors;
int m_headlights;
//etc..
}
可以說我有一些班車。我也有一個std::map<int carkey, Car*>
這是垃圾場。
汽車*可以通過一些驅動程序添加到垃圾站,驅動程序自己新增了汽車,但司機立即失去了汽車*的所有責任。
我想讓JunkYard負責其所有的汽車,人們可以通過人們訪問垃圾車內的汽車,從汽車中取出廢金屬,或者可以粉碎,但垃圾場永遠摧毀它。
在一天結束時,JunkYard銷燬所有汽車並關閉。
-
A) 如果這是一個多線程的應用程序,其中驅動程序可以訪問汽車並行,而垃圾場可能會破壞汽車,我想,大概一個shared_ptr會是最好的?這是否過度殺傷?其他線程可以訪問汽車,但他們永遠不會長期擁有它,它必須始終屬於JunkYard。
B) 如果這是單線程什麼是最好的選擇 - 假設它仍然是一個地圖< some_smart_car_ptr>。我想讓容器自己刪除汽車。例如,調用map.erase(...)應刪除指針並將其從地圖中刪除。
怎麼樣'map'?如果由於某種原因不起作用,我會建議'map >'。 –
Philipp
2012-04-01 21:38:22
感謝您的建議,使用地圖並插入地圖可能會導致重新排序,從而複製和移動汽車的權利?至於unique_ptr,是否可以通過將ref作爲參數傳遞來訪問unique_ptr?我會研究這個 –
skimon
2012-04-01 21:50:39
unique_ptr是C++ 11嗎?我無法訪問此信息。 – skimon 2012-04-01 21:57:59