map<string, Person*> family;
family["Bill"] = new Person();
family["Jill"] = new Person();
...
// vvv does not work vvv
for (Person* person: family)
delete person;
私はすべてのポインタにメモリを解放するためにマップを介し用-eachループをやろうとしています。これはベクターでは機能しますが、マップでは機能しません。どうすればこれを達成できますか?
に減少しあなたのタイトルを検索エンジンに入力すれば、たくさんの方法が見つかるでしょう。 –
'std :: map'の' value_type'が何であるか調べて、 'auto'を使ってください。それがあなたのやり方です。 – LogicStuff
なぜあなたはあなたのマップに生ポインタではなくスマートポインタを保持させるのですか?その後、マップをクリアするだけで、スマートポインタはリソースを解放します。 –