ไลบรารีแม่แบบมาตรฐานของภาษาซีพลัสพลัส/vector
ไปยังการนำทาง
ไปยังการค้นหา
vector เป็น array ที่สามารถเพิ่มขนาดได้ มีความสามารถ random access และสามารถดำเนินการกับข้อมูลด้านปลายได้ในเวลาคงที่
หากได้อ่าน deque มาแล้ว จะเห็นได้ว่า vector มีความสามารถด้อยกว่า เนื่องจาก deque มีความสามารถเหมือน vector ทุกประการ แต่สามารถเพิ่ม/ลบข้อมูลทางด้านหน้าได้ด้วย อย่างไรก็ตาม หากโปรแกรมที่จะเขียนไม่ได้มีการดำเนินการกับข้อมูลด้านหน้าก็จะนิยมใช้ vector มากกว่า เนื่องจากในทางปฏิบัติ deque จะใช้พื้นที่มากกว่า vector
การใช้งานและการประกาศตัวแปร[แก้ไข | แก้ไขต้นฉบับ]
ต้องนำเข้า header file "vector" โดย #include <vector>
ให้ T คือชนิดข้อมูลใดๆ และ var คือชื่อตัวแปร มีรูปแบบการประกาศตัวแปร vector โดย vector <T> var;
method[แก้ไข | แก้ไขต้นฉบับ]
push_back[แก้ไข | แก้ไขต้นฉบับ]
คำอธิบาย | เป็นการเพิ่มข้อมูลชนิด T ลงทางด้านปลายของ vector ใช้เวลา |
---|---|
พารามิเตอร์ | มีเพียงตัวเดียวคือข้อมูลชนิด T ที่ต้องการจะใส่ลง vector ทางด้านปลาย |
คืนค่า | ไม่มี |
ฟังก์ชั่นต้นแบบ | void push_back(T);
|
ข้อควรระวัง | ไม่มี |
pop_back[แก้ไข | แก้ไขต้นฉบับ]
คำอธิบาย | เป็นการลบข้อมูลชนิด T ทางด้านปลายของ vector ใช้เวลา |
---|---|
พารามิเตอร์ | ไม่มี |
คืนค่า | ไม่มี |
ฟังก์ชั่นต้นแบบ | void pop_back();
|
ข้อควรระวัง | หาก size ของ vector เป็น 0 จะเกิด error
|
front[แก้ไข | แก้ไขต้นฉบับ]
คำอธิบาย | เป็นการหาค่าที่อยู่ด้านหน้าของ vector ใช้เวลา |
---|---|
พารามิเตอร์ | ไม่มี |
คืนค่า | ข้อมูลชนิด T ที่อยู่ด้านหน้าของ vector |
ฟังก์ชั่นต้นแบบ | T front();
|
ข้อควรระวัง | หาก size ของ vector เป็น 0 จะเกิด error
|
back[แก้ไข | แก้ไขต้นฉบับ]
คำอธิบาย | เป็นการหาค่าที่อยู่ด้านปลายของ vector ใช้เวลา |
---|---|
พารามิเตอร์ | ไม่มี |
คืนค่า | ข้อมูลชนิด T ที่อยู่ด้านปลายของ vector |
ฟังก์ชั่นต้นแบบ | T back();
|
ข้อควรระวัง | หาก size ของ vector เป็น 0 จะเกิด error
|
size[แก้ไข | แก้ไขต้นฉบับ]
คำอธิบาย | เป็นการหาว่าขณะนี้ vector มีขนาดเท่าไหร่ ใช้เวลา |
---|---|
พารามิเตอร์ | ไม่มี |
คืนค่า | จำนวนเต็ม บอกถึงขนาดของ vector |
ฟังก์ชั่นต้นแบบ | int size();
|
ข้อควรระวัง | ไม่มี |
empty[แก้ไข | แก้ไขต้นฉบับ]
คำอธิบาย | เป็นการหาว่าขณะนี้ vector ว่างหรือไม่ ใช้เวลา |
---|---|
พารามิเตอร์ | ไม่มี |
คืนค่า |
|
ฟังก์ชั่นต้นแบบ | bool empty();
|
ข้อควรระวัง | ไม่มี |
operator[แก้ไข | แก้ไขต้นฉบับ]
[][แก้ไข | แก้ไขต้นฉบับ]
คำอธิบาย | เป็นการหาค่าของข้อมูลช่องที่ต้องการแบบ random access ซึ่งใช้เวลา O(1)
ตัวอย่างการใช้งาน ดูที่นี่ |
---|---|
พารามิเตอร์ | มีเพียงตัวเดียวคือ จำนวนเต็มในช่วง แสดงถึงช่องที่ต้องการหาค่า |
คืนค่า | ข้อมูลชนิด T ที่ต้องการหาค่า |
ฟังก์ชั่นต้นแบบ | T operator[](int);
|
ข้อควรระวัง | ไม่มี |
ตัวอย่างโค้ด[แก้ไข | แก้ไขต้นฉบับ]
#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 ", V[i]); // => 13 5 0 1 2 3
while(not 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;
}