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