私はこのような地図を使用しています:
map<int,CUser*> m_mUsers;
..。
for ( i = m_mUsers.begin(); i != m_mUsers.end(); i++ )
{
if( (*i).second->GetUserID() == pUser->GetUserID() )
(*i).second->OnDeviceLogout( pUser );
}
..。
マップに追加:
m_mUsers[ sd ] = pUser;
マップからの削除:
i = m_mUsers.find( sd );
m_mUsers.erase( i );
これを実行すると、ほとんどの場合、期待どおりに機能します。しかし、ごくまれに、ジャンクレコードがマップに残ることがあるため、空のマップであると予想されるものを反復処理しようとすると、ジャンクレコードが発生し、i-> second-> GetUserID()...でクラッシュします。私は間違っていますか?