Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

deque::shrink_to_fit() trong C++ STL


Trong bài viết này, chúng ta sẽ thảo luận về cách hoạt động, cú pháp và ví dụ của hàm deque::shrink_to_fit() trong C++ STL.

Deque là gì?

Deque (Double Ended Queue) là container trình tự cung cấp chức năng mở rộng và co hẹp ở cả hai đầu. Queue thông thường chỉ cho phép chèn ở cuối và xóa ở đầu, còn Deque cho phép chèn và xóa ở cả hai đầu.

deque::shrink_to_fit() là gì?

deque::shrink_to_fit() là hàm built-in trong C++ STL được khai báo trong header <deque>. Hàm này thu hẹp dung lượng (capacity) của deque container xuống kích thước phù hợp (fit size) và loại bỏ các phần tử vượt quá kích thước đó. Hàm rất hữu ích khi gặp vấn đề về kích thước hoặc container vượt quá kích thước quy định.

Cú pháp

mydeque.shrink_to_fit();

Hàm không yêu cầu tham số.

Giá trị trả về

Hàm này không trả về giá trị.

Ví dụ

Input: deque<int> mydeque = {10, 20, 30, 40, 0, 0, 0}; mydeque.shrink_to_fit(); Output: Size of the mydeque = 40

Ví dụ hoàn chỉnh 1

#include <bits/stdc++.h>
using namespace std;
int main() {
    deque<int> Deque(50);
    cout << "Initial size of Deque is : " << Deque.size();
    Deque.resize(40);
    cout << "\nDeque size after resizing it : " << Deque.size() << endl;
    Deque.shrink_to_fit();
    return 0;
}

Kết quả

Initial size of Deque is : 50
Deque size after resizing it : 40

Ví dụ hoàn chỉnh 2

#include <bits/stdc++.h>
using namespace std;
int main() {
    deque<int> Deque(10);
    for (int i = 0; i <= 5; i++)
        Deque[i] = i;
    cout << "Initial size of Deque is: " << Deque.size();
    cout << "\n Deque elements are: ";
    for (int i = 0; i <= 7; i++)
        cout << Deque[i] << " ";
    Deque.resize(10);
    cout << "\n After resizing deque size is : " << Deque.size();
    cout << "\n Deque elements are: ";
    for (int i = 0; i < 10; i++)
        cout << Deque[i] << " ";
    Deque.shrink_to_fit();
    return 0;
}

Kết quả

Deque elements are: 0 1 2 3 4 5 0 0
After resizing deque size is : 10
Deque elements are: 0 1 2 3 4 5 0 0 0 0