ข้ามไปเนื้อหา

ไลบรารีแม่แบบมาตรฐานของภาษาซีพลัสพลัส/queue

จาก วิกิตำรา

queue เป็นโครงสร้างข้อมูล แบบ FIFO


การใช้งานและการประกาศตัวแปร

[แก้ไข | แก้ไขต้นฉบับ]

ต้องนำเข้า header file "queue" โดย #include <queue>

ให้ T คือชนิดข้อมูลใดๆ และ var คือชื่อตัวแปร มีรูปแบบการประกาศตัวแปร queue โดย queue <T> var;

คำอธิบาย เป็นการเพิ่มข้อมูลชนิด T ลงทางด้านปลายของ queue เหมือนการ enqueue ใช้เวลา
พารามิเตอร์ มีเพียงตัวเดียวคือข้อมูลชนิด T ที่ต้องการจะใส่ลง queue
คืนค่า ไม่มี
ฟังก์ชั่นต้นแบบ void push(T);
ข้อควรระวัง ไม่มี
คำอธิบาย เป็นการลบข้อมูลชนิด T ทางด้านหน้าของ queue เหมือนการ dequeue ใช้เวลา
พารามิเตอร์ ไม่มี
คืนค่า ไม่มี
ฟังก์ชั่นต้นแบบ void pop();
ข้อควรระวัง หาก size ของ queue เป็น 0 จะเกิด error
คำอธิบาย เป็นการหาค่าที่อยู่ด้านหน้าของ queue ใช้เวลา
พารามิเตอร์ ไม่มี
คืนค่า ข้อมูลชนิด T ที่อยู่ด้านหน้าของ queue
ฟังก์ชั่นต้นแบบ T front();
ข้อควรระวัง หาก size ของ queue เป็น 0 จะเกิด error
คำอธิบาย เป็นการหาว่าขณะนี้ queue มีขนาดเท่าไหร่ ใช้เวลา
พารามิเตอร์ ไม่มี
คืนค่า จำนวนเต็ม บอกถึงขนาดของ queue
ฟังก์ชั่นต้นแบบ int size();
ข้อควรระวัง ไม่มี
คำอธิบาย เป็นการหาว่าขณะนี้ queue ว่างหรือไม่ ใช้เวลา
พารามิเตอร์ ไม่มี
คืนค่า
  • ค่า true เมื่อ queue ว่าง (ขนาดเป็น 0)
  • ค่า false เมื่อ queue ไม่ว่าง (ขนาดมากกว่า 0)
ฟังก์ชั่นต้นแบบ bool empty();
ข้อควรระวัง ไม่มี

ตัวอย่างโค้ด

[แก้ไข | แก้ไขต้นฉบับ]
#include <cstdio>
#include <queue>

using namespace std;

struct ST{
    int a, b;
};

int main(){
    queue <int> Q;               // []
    Q.push(13);                  // [13]
    Q.push(12);                  // [13,12]
    Q.push(11);                  // [13,12,11]
    Q.push(10);                  // [13,12,11,10]
    printf("%d\n", Q.front());   // => 13
    Q.pop();                     // [12,11,10]
    printf("%d\n", Q.size());    // => 3
    while(not Q.empty()) Q.pop();    // []
    Q.pop()                      // => Error
    Q.top()                      // => Error
    
    ST tmp;
    queue <ST> T;                // []
    tmp.a = 5;
    tmp.b = 3;
    T.push(tmp);                 // [(5,3)]
    printf("%d\n", T.front().b); // => 3
    return 0;
}
พัฒนา 75% ตั้งแต่ 21 กุมภาพันธ์ 2556 stack
พัฒนา 75% ตั้งแต่ 21 กุมภาพันธ์ 2556 queue
พัฒนา 75% ตั้งแต่ 21 กุมภาพันธ์ 2556 priority_queue
พัฒนา 75% ตั้งแต่ 21 กุมภาพันธ์ 2556 deque
พัฒนา 75% ตั้งแต่ 21 กุมภาพันธ์ 2556 vector
พัฒนา 25% ตั้งแต่ 21 กุมภาพันธ์ 2556 map
พัฒนา 0% ตั้งแต่ 21 กุมภาพันธ์ 2556 set