Trước C++11
Tôi đã sử dụng hoán đổi-to-back để tránh các chi phí bản sao sâu, như:using std :: di chuyển
vector<vector<Object> > Objects;
for(/* some range */)
{
vector<Object> v;
for(/* some other range */)
{
v.push_back(/* some object */);
}
Objects.push_back(vector<Object>());
Objects.back().swap(v);
}
Làm thế nào tôi có thể sử dụng để di chuyển std::move
v
vào Objects
để tránh sao chép sâu overhead thay vì swap
?
Tôi biết có rất nhiều cách giải quyết ở đây như nhiều mảng hoặc chỉ chèn trực tiếp vào Objects.back()
, nhưng tôi cần một ví dụ về cách sử dụng std::move
để hiểu nó.
Tại sao bạn tạo 'v'? Tại sao không chỉ thêm một vector trống vào các đối tượng và sau đó là 'Objects.back(). Push_back()' vào nó? Điều đó loại bỏ nhiều chi phí hơn trong khi đơn giản hơn. – Ayjay
@Ayjay: đọc phần còn lại của câu hỏi – Dani