Это, вероятно, не имеет значения.
Вы можете подумать, что это будет иметь значение, если у вас есть два потока: один пытается удалить элемент с карты, а другой пытается получить доступ к той же карте.Вы можете прийти к выводу, что было бы безопаснее сначала удалить элемент с карты, чтобы другой поток не получил указатель на удаленный объект.
Однако, если у вас есть несколько потоков, обращающихсяту же карту, вам нужно защитить ее с помощью объекта синхронизации (мьютекс или CRITICAL_SECTION, если вы работаете в простом Win32.) std :: map не безопасен для несинхронизированного многопоточного использования, когда один поток изменяет коллекцию.Итак, если вы уже блокируете карту во время удаления и удаления, не имеет значения, каким образом вы это делаете.
Сказав это, если уничтожение вашего объекта занимает много времени, вы можетекак переместить вызов удаления за пределы части кода, заблокированной мьютексом.В этом случае сначала сохраните указатель объекта во временной переменной, удалите его запись на карте, разблокируйте, а затем удалите.