Sử dụng thư viện STL trong C++ : Queue

Giới thiệu về queue:

Queue(hàng đợi) là một loại container, được thiết kế để hoạt động theo kiểu FIFO (First- in first – out) (vào trước ra trước), tức là một kiểu danh sách mà việc bổ sung được thực hiển ở cuối danh sách và loại bỏ ở đầu danh sách.

Trong queue, có hai vị trí quan trọng là vị trí đầu danh sách (front), nơi phần tử được

lấy ra, và vị trí cuối danh sách (back), nơi phần tử cuối cùng được thêm vào.

Khai báo queue:

Để sử dụng queue, ta cần khai báo thư viện queue:

Các phương thức thành viên:

Capacity:
size() Trả về số lượng phần tử của queue
empty() Trả về true(1) nếu queue rỗng, ngược lại là false (0)
Element access:
font() Truy xuất phần tử ở đầu queue (phần tử đầu tiên được thêm vào)
back() Truy xuất phần tử ở cuối queue (phần tử cuối cùng được thêm vào)
Modifier:
push (const x) Thêm phần tử có giá trị x vào cuối queue. Kích thước queue tăng thêm 1.
pop () Loại bỏ phần tử ở đầu queue. Kích thước queue giảm đi 1.

Capacity:

size()

Trả về số lượng phần tử của queue.

Ví dụ: Tạo một queue  có kích thước là 5 và in ra số lượng phần tử của queue này.

Lưu ý:

Tương tự như stack, ta không thể khai báo queue<int> myQueue (5) để khai báo 5 phần tử rỗng tương tự như vector hay list vì queue không cho phép ta khai báo phần tử rỗng.

Tương tự, ta không thể khai báo queue<int> myQueue (5,100) để khai báo 5 phần tử của queue có giá trị 100.

empty()

Trả về true(1) nếu queue rỗng, ngược lại là false (0)

Ví dụ: Kiểm tra queue có rỗng không và  in ra thông báo tương ứng.

Element access:

front()

Truy xuất phần tử ở đầu queue (phần tử đầu tiên được thêm vào).

Ví dụ: Tạo queue có 5 phần tử có giá trị lần lượt là  A,B,C,D,E. Thay đổi phẩn tử đầu tiền thêm vào thành ‘a’. In ra phần tử ở đầu của queue sau khi thay đổi.

back()

Truy xuất phần tử ở cuối queue (phần tử cuối cùng được thêm vào).

Ví dụ: Tạo queue có 5 phần tử có giá trị lần lượt là a,b,c,d,e. Thay đổi phẩn tử cuối cùng được thêm vào thành ‘E’. In ra phần tử cuối cùng của queue sau khi thay đổi.

Modifier:

push (const x)

Thêm phần tử có giá trị x vào cuối queue. Kích thước queue tăng thêm 1.

Phương thức push của queue tương tự như phương thức push_back của list.

Ví dụ:

Viết chương trình cho người dùng nhập vào kích thước queue và nhập vào giá trị các phần tử. In các phần tử trong queue.

Nhận xét:

Khác với stack, thứ tự in các phần tử của queue sẽ giống như thứ tự mà ta nhập vào.
Tương tự như stack, không thể sử dụng vòng lặp với biến iterator như đối list để in tất cả các phần tử vì queue chỉ cho phép truy xuất duy nhất phần tử ở đầu queue. Ví dụ, mã lệnh truy xuất queue như bên dưới là sai:

pop ()

Loại bỏ phần tử ở đầu queue (phần tử đầu tiên  được thêm vào queue) . Kích queue giảm đi 1.

Ví dụ: Viết chương trình cho người dùng nhập vào kích thước queue và nhập vào giá trị các phần tử. Sau đó, loại bỏ đi một nửa các phần tử ở đầu queue.

Không phải hàm thành viên:

swap(queue q1, queue q2) :

Hoán đổi  các phần tử của 2 queue với nhau.

Lưu ý: khác với vector và list, swap không phải là hàm thành viên của đối tượng, do đó, hàm swap cần truyền vào 2 tham số.

Ví dụ: Tạo queue thứ nhất có 3 phần tử 1,3,5 và queue thứ 2 có 2 phần tử 2,4. Hoán đổi các phần tử của hai queue. In ra kích thước của hai queue sau khi hoán đổi.

Nhận xét