Tôi cần một hộp chứa con trỏ. Bạn có đề xuất boost::ptr_vector<T>
hoặc std::vector<boost::shared_ptr<T> >
không? (Hoặc cái gì khác?)Tôi có nên sử dụng boost :: ptr_vector <T> hoặc vector <boost :: shared_ptr <T>>?
Nếu điều đó quan tâm, cấu trúc dữ liệu thực tế của tôi tương đối phức tạp (xem here) và hiện đang lưu trữ các đối tượng, chứ không phải con trỏ, nhưng tôi muốn thay đổi (sử dụng các vùng chứa con trỏ), theo thứ tự để loại bỏ việc sao chép không cần thiết:
typedef std::multimap<Foo0, std::map<int, double> > VecElem;
std::vector<VecElem> vec;
nơi sao chép không cần thiết này xảy ra? –
@Idan: Bất cứ lúc nào bạn chèn thứ gì đó vào vectơ hoặc multimap từ trên cao. – Frank
@Idan: Khi bạn có một thùng chứa lưu trữ con trỏ, chỉ con trỏ sẽ được sao chép khi thêm dữ liệu, khi bạn lưu trữ các đối tượng, các đối tượng thực tế sẽ được sao chép. Đây là một vấn đề khi bạn đang đối phó với các đối tượng đắt tiền để sao chép. – sbi