STL vector

vector เป็น array ที่สามารถเพิ่มขนาดได้ มีความสามารถ random access และสามารถดำเนินการกับข้อมูลด้านปลายได้ในเวลาคงที่

หากได้อ่าน STL deque มาแล้ว จะเห็นได้ว่า vector มีความสามารถด้อยกว่า เนื่องจาก deque มีความสามารถเหมือน
vector ทุกประการ แต่สามารถเพิ่ม/ลบข้อมูลทางด้านหน้าได้ด้วย อย่างไรก็ตาม หากโปรแกรมที่จะเขียนไม่ได้มีการดำเนินการ
กับข้อมูลด้านหน้าก็จะนิยมใช้ vector มากกว่า เนื่องจากในทางปฏิบัติ deque จะใช้พื้นที่มากกว่า vector

การใช้งาน

ต้องเรียกใช้ header file "vector" และเรียกใช้ namespace std

#include <vector>
 
using namespace std;

การประกาศตัวแปร

ให้ T คือ datatype ใดๆ และ var คือชื่อตัวแปร มีรูปแบบการประกาศตัวแปร vector ดังนี้

vector <T> var;

method

push_back

คำอธิบาย เป็นการเพิ่มข้อมูลชนิด T ลงทางด้านปลายของ vector ใช้เวลา O$(1)$
parameter มีเพียงตัวเดียวคือข้อมูลชนิด T ที่ต้องการจะใส่ลง vector ทางด้านปลาย
return ไม่มี
prototype void push_back(T);

pop_back

คำอธิบาย เป็นการลบข้อมูลชนิด T ทางด้านปลายของ vector ใช้เวลา $O(1)$
ข้อควรระวัง : หาก size ของ vector เป็น 0 จะเกิด error
parameter ไม่มี
return ไม่มี
prototype void pop_back();

front

คำอธิบาย เป็นการหาค่าที่อยู่ด้านหน้าของ vector ใช้เวลา $O(1)$
ข้อควรระวัง : หาก size ของ vector เป็น 0 จะเกิด error
parameter ไม่มี
return ข้อมูลชนิด T ที่อยู่ด้านหน้าของ vector
prototype T front();

back

คำอธิบาย เป็นการหาค่าที่อยู่ด้านปลายของ vector ใช้เวลา $O(1)$
ข้อควรระวัง : หาก size ของ vector เป็น 0 จะเกิด error
parameter ไม่มี
return ข้อมูลชนิด T ที่อยู่ด้านปลายของ vector
prototype T back();

size

คำอธิบาย เป็นการหาว่าขณะนี้ vector มีขนาดเท่าไหร่ ใช้เวลา $O(1)$
parameter ไม่มี
return จำนวนเต็ม บอกถึงขนาดของ vector
prototype int size();

empty

คำอธิบาย เป็นการหาว่าขณะนี้ vector ว่างหรือไม่ ใช้เวลา $O(1)$
parameter ไม่มี
return ค่า true เมื่อ vector ว่าง (ขนาดเป็น 0)
ค่า false เมื่อ vector ไม่ว่าง (ขนาดมากกว่า 0)
prototype bool empty();

operator

[]

คำอธิบาย เป็นการหาค่าของข้อมูลช่องที่ต้องการแบบ random access ซึ่งใช้เวลา O(1)
ตัวอย่างการใช้งาน ดูที่ code STL vector
operand มีเพียงตัวเดียวคือ จำนวนเต็มในช่วง [0,size) แสดงถึงช่องที่ต้องการหาค่า
return ข้อมูลชนิด T ที่ต้องการหาค่า
prototype T operator[](int);

code STL vector

#include <cstdio>
#include <vector>
 
using namespace std;
 
struct ST{
    int a, b;
};
 
int main(){
    vector <int> V; 
    // []
 
    V.push_back(13);
    // [13]
 
    V.push_back(12);
    // [13,12]
 
    V.pop_back();
    // [13]
 
    V.push_back(5);
    // [13,5]
 
    printf("%d", V.back());
    // => 5
 
    printf("%d", V.front());
    // => 13
 
    for(int i = 0; i < 4; i++)
        V.push_back(i);
    // [13,5,0,1,2,3]
 
    for(int i = 0; i < (int)V.size(); i++)
        printf("%d ", Q[i]);
    // => 13 5 0 1 2 3
 
    while(!V.empty())
        V.pop_back();
    // []
 
    V.pop_back()
    // => Error
 
    V.front()
    // => Error
 
    V.back()
    // => Error
 
    ST tmp;
    vector <ST> T;
    // []
 
    tmp.a = 5;
    tmp.b = 3;
 
    T.push_back(tmp);
    // [(5,3)]
 
    printf("%d\n", T.front().b);
    // => 3
 
    return 0;
}

TODO: constructor

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License