私は
map<char,my_class*> mymap;
その内容は以下の通りです。
mymap[0]=('a', 0x1);
mymap[1]=('b',0x2);
mymap[3]=('c',0x3);
mymap[4]=('d',0x1);
ご覧のとおり、キー「a」と「d」の値は同じです。マップ内のポインターを削除するための for ループがあります。
for ( it=mymap.begin() ; it != mymap.end(); it++ ){
delete it->second;
}
0x1 を 2 回削除しようとしているため、クラッシュします。私はこれをやってみました
for ( it=mymap.begin() ; it != mymap.end(); it++ ){
if(!it->second){
delete it->second;
it->second = NULL;
}
}
これでもポインタを NULL に 2 回設定しようとするため、例外が発生します。マップで上記のように重複した値を削除する最良の方法は何ですか?