C++ STL: Tìm hiểu và sử dụng Queue

Hi, xin chào các bạn đến với chủ đề :Học lập trình C++ STL.

Bài viết này, chúng ta sẽ cùng tìm hiểu về cách sử dụng Queue trong  thư viện tiêu chuẩn STL.
I. Các đặc điểm cơ bản của std::Queue

– Là một dạng container adaptors giống như kiểu stack, nhưng nó có những điểm khác biệt.

– Nếu như stack là vào sau ra trước, thì hàng đợi (queue) lại vào trước ra trước, giống như nguyên lý xếp hàng mua đồ.

– Các phần tử được chèn vào và được hủy bỏ từ phía trước.

II. Các function chính trong lớp Queue

1. Cách khai báo để sử dụng Queue.

#include<queue>
using namespace std; 
int main() 
{ 
    std::queue <int> q_data;
    q_data.push(1);
    q_data.push(2);
    q_data.push(3);
    q_data.push(4);

    return 0;
}

 

2. Lấy số lượng phần từ mà nó sở hữu:   

=> Sử dụng hàm size()

    std::queue <int> q_data;
    q_data.push(1);
    q_data.push(2);
    q_data.push(3);
    q_data.push(4);


    int length = q_data.size();

 

3. Đẩy dữ liệu với hàm push và bỏ dữ liệu với hàm pop

    std::queue <int> q_data;
    q_data.push(1);
    q_data.push(2);
    q_data.push(3);
    q_data.push(4);


    q_data.pop();
    q_data.pop();
    q_data.pop();

như vậy pop lần đầu thì 1 sẽ bị xóa khỏi hàng đợi

pop lần 2 thì xóa 2, pop lần 3 thì xóa 3 => danh sách chỉ còn lại phần tử 4.

 

4. Khi muốn lấy giá trị của phần tử đầu và phần tử cuối

– Sử dụng hai hàm front(), back(), hàng đợi không bị mất đi phần tử.

   std::queue <int> q_data;
    q_data.push(1);
    q_data.push(2);
    q_data.push(3);
    q_data.push(4);


    int first = q_data.front();
    int last = q_data.back();

 

5. Đổi giá trị hai hàng đợi cho nhau

– Sử dụng hàm swap, chỉ cần cùng kiểu dữ liệu, còn kích thước có thể khác nhau.

    std::queue <int> q_data;
    q_data.push(1);
    q_data.push(2);
    q_data.push(3);
    q_data.push(4);

    std::queue <int> q_data2;
    q_data2.push(1);
    q_data2.push(2);
    q_data2.push(3);
    q_data2.push(4);
    q_data2.push(5);

    q_data2.swap(q_data);

 

6. Kiểm tra xem mảng có phần tử nào không.

– Có thể sử dụng hàm size() để kiểm tra số lượng phần tử với 0

– Sử dụng hàm empty():  trả về true nếu số lượng phần tử = 0 và ngược lại là false.

 

7. Lấy giá trị từng phần tử của queue, hoặc show danh sách

– Sử dụng hàm front();

   std::queue <int> q_data;
    q_data.push(1);
    q_data.push(2);
    q_data.push(3);
    q_data.push(4);

    while (!q_data.empty()) 
    { 
        cout << '\t' << q_data.front(); 
        q_data.pop(); 
    } 
    cout << '\n';

– Mỗi lần front thì lại thực hiện pop để hàng đợi xóa phần tử đầu tiên, và phần tử tiếp theo sẽ được thế vào vị trí đầu tiên

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.