std::vector::shrink_to_fit
#include <vector>
void shrink_to_fit();
Yêu cầu giảm dung lượng của vector về đúng với kích thước hiện tại, giải phóng bộ nhớ không sử dụng.
Tham số
Không có tham số
Giá trị trả về
Không có giá trị trả về
Đặc điểm
- Giảm dung lượng của vector xuống đúng với số phần tử hiện tại, giải phóng bộ nhớ dư thừa nếu có.
- Lời gọi hàm
shrink_to_fit()
không bảo đảm trình biên dịch hoặc runtime thực hiện việc giảm dung lượng. Việc này phụ thuộc vào trình quản lý bộ nhớ của hệ thống và có thể không thực hiện nếu không cần thiết. - Dùng để tối ưu hóa bộ nhớ trong trường hợp vector có dư thừa dung lượng không cần thiết.
- Hàm không thay đổi kích thước (size) hoặc nội dung các phần tử của vector.
- Nếu bộ nhớ không thể được tái phân phối (reallocated) hiệu quả, lời gọi
shrink_to_fit()
có thể không có tác dụng. - Việc giải phóng dung lượng thừa có thể tạo ra chi phí hiệu năng, vì có khả năng tái cấp phát bộ nhớ.
- Nên sử dụng hàm này chỉ khi có lý do chính đáng để tối ưu hóa bộ nhớ.
Ví dụ
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec;
// Thêm phần tử
vec.push_back(10);
vec.push_back(20);
vec.push_back(30);
// Kiểm tra size và capacity trước khi shrink_to_fit
std::cout << "Size before: " << vec.size() << "\n";
std::cout << "Capacity before: " << vec.capacity() << "\n";
// Yêu cầu giảm dung lượng
vec.shrink_to_fit();
// Kiểm tra size và capacity sau khi shrink_to_fit
std::cout << "Size after: " << vec.size() << "\n";
std::cout << "Capacity after: " << vec.capacity() << "\n";
return 0;
}
Các hàm liên quan
capacity | Trả về dung lượng hiện tại của vector |
reserve | Yêu cầu thay đổi/khởi tạo (trước) dung lượng của vector |
resize | Thay đổi kích thước vector |