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

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

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

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

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

method แก้ไข

push แก้ไข

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

pop แก้ไข

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

top แก้ไข

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

size แก้ไข

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

empty แก้ไข

คำอธิบาย เป็นการหาว่าขณะนี้ stack ว่างหรือไม่ ใช้เวลา  
พารามิเตอร์ ไม่มี
คืนค่า ค่า true เมื่อ stack ว่าง (ขนาดเป็น 0)

ค่า false เมื่อ stack ไม่ว่าง (ขนาดมากกว่า 0)

ฟังก์ชั่นต้นแบบ bool empty();
ข้อควรระวัง ไม่มี

ตัวอย่างโค้ด แก้ไข

#include <cstdio>
#include <stack>

using namespace std;

struct ST{
    int a, b;
};

int main(){
    stack <int> S;                // []
    S.push(13);                   // [13]
    S.push(12);                   // [13,12]
    S.push(11);                   // [13,12,11]
    S.push(10);                   // [13,12,11,10]
    printf("%d\n", S.top());      // => 10
    S.pop();                      // [13,12,11]
    printf("%d\n", S.size());     // => 3
    while(not S.empty()) S.pop(); // []
    S.pop()                       // => Error
    S.top()                       // => Error
                                  
    ST tmp;                       
    stack <ST> T;                 // []
    tmp.a = 5;                    
    tmp.b = 3;                    
    T.push(tmp);                  // [(5,3)]
    printf("%d\n", T.top().b);    // => 3
    return 0;
}

สารบัญ แก้ไข

  stack
  queue
  priority_queue
  deque
  vector
  map
  set