そのため、これを処理するための最良のスマートポインターがあるかどうかを判断しようとして、かなりのグーグル検索を行いましたが、良い選択に落ち着くことができませんでした.
struct Car
{
int m_doors;
int m_headlights;
//etc..
}
私はいくつかのクラス Car を持っているとしましょう。ジャンクヤードも持ってstd::map<int carkey, Car*>
います。
Car* は、一部の Driver によって JunkYard に追加される可能性があります。Driver 自身が Car を新規作成しますが、Driver は Car* のすべての責任を即座に失います。
私はジャンクヤードがすべての車に責任を持つことを望みます.
1 日の終わりに、JunkYard はすべての Car を破壊し、シャットダウンします。
--
A) これがマルチスレッド アプリで、ドライバーが同時に車にアクセスでき、JunkYard が車を破壊できる場合、おそらく shared_ptr が最適ではないかと考えていました。これはやり過ぎですか?他のスレッドが車にアクセスすることはできますが、その車を長期間所有することはなく、常に JunkYard に属している必要があります。
B) これがシングル スレッドの場合、最良の選択は何か - まだ map< some_smart_car_ptr> であると仮定します。車自体を削除するコンテナを車に乗せたいと思います。たとえば、 map.erase(...) を呼び出すと、ポインターがマップから削除されるだけでなく、ポインターも削除されます。