std::deque::shrink_to_fit
#include <deque>
void shrink_to_fit();
Gửi một yêu cầu (không phải là bắt buộc) đến deque giảm thiểu việc sử dụng bộ nhớ, sao cho phù hợp với kích thước hiện tại (số lượng phần tử).
Tham số
Không có tham số
Giá trị trả về
Không có giá trị trả về
Đặc điểm
shrink_to_fit()
thường được gọi sau khi bạn đã xóa một lượng lớn phần tử khỏi deque và muốn giải phóng bộ nhớ không còn sử dụng.shrink_to_fit()
chỉ là một yêu cầu, không phải là một lệnh bắt buộc. Việc deque có thực sự giảm dung lượng bộ nhớ hay không phụ thuộc vào trình triển khai (implementation) của thư viện chuẩn.shrink_to_fit()
không làm thay đổi số lượng phần tử (kích thước) hoặc giá trị của các phần tử trong deque. Nó chỉ cố gắng tối ưu hóa việc sử dụng bộ nhớ.shrink_to_fit()
không ném ra bất kỳ ngoại lệ nào (trừ khi việc cấp phát bộ nhớ thất bại, nhưng trường hợp này rất hiếm và không được coi là ngoại lệ củashrink_to_fit()
).- Hành vi của
shrink_to_fit()
có thể khác nhau giữa các trình biên dịch và thư viện chuẩn khác nhau. - Đối với std::vector,
shrink_to_fit()
có thể làm thay đổicapacity()
, nhưng std::deque không có khái niệmcapacity()
. - Không có cách trực tiếp để kiểm tra xem
shrink_to_fit()
có thực sự giải phóng bộ nhớ hay không trong deque, vì deque không cung cấp hàmcapacity()
. - Độ phức tạp: Độ phức tạp của
shrink_to_fit()
không được quy định cụ thể trong tiêu chuẩn, nhưng thường phụ thuộc vào cách thức cấp phát bộ nhớ của trình triển khai.
Ví dụ
#include <iostream>
#include <deque>
int main() {
std::deque<int> myDeque;
for (int i = 0; i < 1000; ++i) {
myDeque.push_back(i);
}
std::cout << "Size: " << myDeque.size() << '\n';
myDeque.erase(myDeque.begin(), myDeque.begin() + 900); // Xóa 900 phần tử
std::cout << "Size after erasing: " << myDeque.size() << '\n';
myDeque.shrink_to_fit(); // Yêu cầu deque thu gọn bộ nhớ
// Không có cách trực tiếp để kiểm tra dung lượng bộ nhớ của deque
// nhưng sau khi gọi shrink_to_fit(), deque có thể (không bắt buộc)
// đã giải phóng bộ nhớ không sử dụng.
return 0;
}
Các hàm liên quan
size | Lấy số lượng phần tử hiện có trong deque |
resize | Thay đổi kích thước của deque |
clear | Xóa tất cả các phần tử khỏi deque, làm cho deque trở thành rỗng |