Giả sử tôi có một số số unordered_map
con trỏ tới các phiên bản lớp học, việc xóa một đối tượng khỏi bản đồ đó cũng có xóa đối tượng không?std :: unordered_map <std :: String, myClass *> - không std :: unordered_map :: erase() gọi myClass 'DTor?
(viết lại câu hỏi :) Nếu tôi muốn xóa phiên bản đó, phiên bản nào sẽ đúng?
if(it != map.end())
{
delete it->second;
map.erase(it);
}
hoặc đơn giản là
if(it != map.end())
map.erase(it);
?
CẬP NHẬT: như được đề xuất bởi nhiều người, tôi đã chuyển sang sử dụng shared_ptr
và hoạt động tuyệt vời!
'xóa 'tự nó sẽ làm rò rỉ con trỏ. Xem xét sử dụng bản đồ 'unique_ptr's. –
Nếu nó cần sở hữu các con trỏ, tại sao không sử dụng 'unique_ptr', điều này sẽ xóa đối tượng cho bạn? – MicroVirus
Cảm ơn bạn. Bản đồ chỉ là một tra cứu theo tên, phần còn lại của ứng dụng của tôi cần phải sử dụng các con trỏ, vì vậy tôi có biện pháp phòng ngừa khác để không sử dụng một con trỏ giải phóng. – St0fF