Giả sử tôi có một foo lớp, và muốn sử dụng một std :: bản đồ để lưu trữ một số boost :: shared_ptrs, ví dụ:tăng :: shared_ptr container tiêu chuẩn
class foo;
typedef boost::shared_ptr<foo> foo_sp;
typeded std::map<int, foo_sp> foo_sp_map;
foo_sp_map m;
Nếu tôi thêm một foo_sp mới đến bản đồ nhưng khóa đã sử dụng đã tồn tại, mục nhập hiện có có bị xóa không? Ví dụ:
foo_sp_map m;
void func1()
{
foo_sp p(new foo);
m[0] = p;
}
void func2()
{
foo_sp p2(new foo);
m[0] = p2;
}
Con trỏ ban đầu (p) được giải phóng khi nó được thay thế bằng p2? Tôi khá chắc chắn nó sẽ được, nhưng tôi nghĩ rằng nó là giá trị yêu cầu/chia sẻ.
Câu hỏi đã sửa đổi - nên được chia sẻ_ptr không auto_ptr, – Rob
Đó là "nên _have_" –