Đây là câu hỏi C++ 11 cụ thể. Giả sử tôi có một véc tơ std::vector<T> v
đã được sử dụng và tôi muốn đổi kích thước thành n
các phần tử được khởi tạo với giá trị hiện tại T val
. (Usecase điển hình: vector là thành viên của một thể hiện đang được tái chế).Là std :: vector <T> :: thay đổi kích cỡ (n, val) đủ để khởi tạo?
Ưu điểm/nhược điểm của các cách sau là gì và hiệu quả nhất là gì?
1) Có phải std::vector<T>::resize(n, val)
đủ để khởi tạo không?
v.clear();
v.resize(n, val);
2) Nếu không, thì tôi cho rằng điều sau là đúng?
v.clear();
v.resize(n);
std::fill(v.begin(), v.end(), val);
3) Làm thế nào để hoán đổi?
v.swap(std::vector<T>(n, val));
Nếu đây là một bản sao, xin vui lòng liên kết đến các giải pháp, tôi sẽ bỏ phiếu cho đóng cửa nó. – Sheljohn
Tại sao bạn muốn đổi kích thước? Để giải phóng bộ nhớ? – edmz
@black Trường hợp điển hình: đây là một thành viên cấp lớp và tôi đang tái chế bản sao. – Sheljohn