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

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


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

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

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

method แก้ไข

push แก้ไข

คำอธิบาย เป็นการเพิ่มข้อมูลชนิด T ลงทางด้านปลายของ queue เหมือนการ enqueue ใช้เวลา  
พารามิเตอร์ มีเพียงตัวเดียวคือข้อมูลชนิด T ที่ต้องการจะใส่ลง queue
คืนค่า ไม่มี
ฟังก์ชั่นต้นแบบ void push(T);
ข้อควรระวัง ไม่มี

pop แก้ไข

คำอธิบาย เป็นการลบข้อมูลชนิด T ทางด้านหน้าของ queue เหมือนการ dequeue ใช้เวลา  
พารามิเตอร์ ไม่มี
คืนค่า ไม่มี
ฟังก์ชั่นต้นแบบ void pop();
ข้อควรระวัง หาก size ของ queue เป็น 0 จะเกิด error

front แก้ไข

คำอธิบาย เป็นการหาค่าที่อยู่ด้านหน้าของ queue ใช้เวลา  
พารามิเตอร์ ไม่มี
คืนค่า ข้อมูลชนิด T ที่อยู่ด้านหน้าของ queue
ฟังก์ชั่นต้นแบบ T front();
ข้อควรระวัง หาก size ของ queue เป็น 0 จะเกิด error

size แก้ไข

คำอธิบาย เป็นการหาว่าขณะนี้ queue มีขนาดเท่าไหร่ ใช้เวลา  
พารามิเตอร์ ไม่มี
คืนค่า จำนวนเต็ม บอกถึงขนาดของ queue
ฟังก์ชั่นต้นแบบ int size();
ข้อควรระวัง ไม่มี

empty แก้ไข

คำอธิบาย เป็นการหาว่าขณะนี้ 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;
}

สารบัญ แก้ไข

  stack
  queue
  priority_queue
  deque
  vector
  map
  set