ผลต่างระหว่างรุ่นของ "ไลบรารีแม่แบบมาตรฐานของภาษาซีพลัสพลัส/deque"

เนื้อหาที่ลบ เนื้อหาที่เพิ่ม
Nullzero (คุย | ส่วนร่วม)
เพิ่มหมวดหมู่:STL C++แล้ว ด้วยฮอทแคต
Nullzero (คุย | ส่วนร่วม)
ไม่มีความย่อการแก้ไข
บรรทัดที่ 1:
'''deque''' เป็น [[[data structure]]] ที่มีความสามารถคล้าย [[[../queue|queue]]] แต่สามารถดำเนินการกับข้อมูลทั้งนำข้อมูลเข้าและเอาข้อมูลออก
ทั้งด้านหน้าและด้านปลายได้ทั้งคู่ (ถ้า queue จะดำเนินการนำข้อมูลเข้าได้ที่ปลาย และนำข้อมูลออกที่ด้านหน้าได้เท่านั้น)
ดูรายละเอียดที่ [[[deque]]]
 
[[[ADT]]] ของ deque ต้องการเพียงการจัดการกับข้อมูลส่วนด้านหน้าและปลายเท่านั้น ซึ่งอาจใช้ [[[list]]] ในการเขียนก็ได้
แต่ **deque ของ STL ได้เพิ่มความสามารถ [[[random access]]] ทำให้สามารถเข้าถึงข้อมูลตัวใดๆได้ด้วย [[[operator]]] []
(เหมือน vector)**
 
+== การใช้งานและการประกาศตัวแปร ==
[[toc]]
ต้องนำเข้า header file "deque" โดย <code>#include <deque></code>
 
ให้ T คือ datatype ใดๆ และ var คือชื่อตัวแปร มีรูปแบบการประกาศตัวแปร deque ดังนี้โดย <code>deque <T> var;</code>
+ การใช้งาน
ต้องเรียกใช้ [[[header file]]] "deque" และเรียกใช้ [[[namespace]]] std
 
+== method ==
[[code type="Cpp"]]
++=== push_back ===
#include <deque>
 
using namespace std;
[[/code]]
 
+ การประกาศตัวแปร
ให้ T คือ datatype ใดๆ และ var คือชื่อตัวแปร มีรูปแบบการประกาศตัวแปร deque ดังนี้
 
[[code type="Cpp"]]
deque <T> var;
[[/code]]
 
+ method
++ push_back
 
[[div style="float: left;"]]
||~ คำอธิบาย || เป็นการเพิ่มข้อมูลชนิด T ลงทางด้านปลายของ deque ใช้เวลา [[[big oh|O]]][[$<math>(1)$]]</math> ||
||~ parameter || มีเพียงตัวเดียวคือข้อมูลชนิด T ที่ต้องการจะใส่ลง deque ทางด้านปลาย ||
||~ return || ไม่มี ||
เส้น 36 ⟶ 22:
[[ผู้ใช้:Nullzero|Nullzero]] ([[คุยกับผู้ใช้:Nullzero|พูดคุย]]) 14:27, 15 มกราคม 2556 (ICT)
 
++=== push_front ===
 
[[div style="float: left;"]]
||~ คำอธิบาย || เป็นการเพิ่มข้อมูลชนิด T ลงทางด้านหน้าของ deque ใช้เวลา [[[big oh|O]]][[$<math>(1)$]]</math> ||
||~ parameter || มีเพียงตัวเดียวคือข้อมูลชนิด T ที่ต้องการจะใส่ลง deque ทางด้านหน้า ||
||~ return || ไม่มี ||
เส้น 46 ⟶ 32:
[[ผู้ใช้:Nullzero|Nullzero]] ([[คุยกับผู้ใช้:Nullzero|พูดคุย]]) 14:27, 15 มกราคม 2556 (ICT)
 
++=== pop_back ===
 
[[div style="float: left;"]]
||~ คำอธิบาย || เป็นการลบข้อมูลชนิด T ทางด้านปลายของ deque ใช้เวลา [[$ <math>O(1) $]]</math> _
**ข้อควรระวัง : หาก size ของ deque เป็น 0 จะเกิด error** ||
||~ parameter || ไม่มี ||
เส้น 57 ⟶ 43:
[[ผู้ใช้:Nullzero|Nullzero]] ([[คุยกับผู้ใช้:Nullzero|พูดคุย]]) 14:27, 15 มกราคม 2556 (ICT)
 
++=== pop_front ===
 
[[div style="float: left;"]]
||~ คำอธิบาย || เป็นการลบข้อมูลชนิด T ทางด้านหน้าของ deque ใช้เวลา [[$ <math>O(1) $]]</math> _
**ข้อควรระวัง : หาก size ของ deque เป็น 0 จะเกิด error** ||
||~ parameter || ไม่มี ||
เส้น 68 ⟶ 54:
[[ผู้ใช้:Nullzero|Nullzero]] ([[คุยกับผู้ใช้:Nullzero|พูดคุย]]) 14:27, 15 มกราคม 2556 (ICT)
 
++=== front ===
 
[[div style="float: left;"]]
||~ คำอธิบาย || เป็นการหาค่าที่อยู่ด้านหน้าของ deque ใช้เวลา [[$ <math>O(1) $]]</math> _
**ข้อควรระวัง : หาก size ของ deque เป็น 0 จะเกิด error** ||
||~ parameter || ไม่มี ||
เส้น 79 ⟶ 65:
[[ผู้ใช้:Nullzero|Nullzero]] ([[คุยกับผู้ใช้:Nullzero|พูดคุย]]) 14:27, 15 มกราคม 2556 (ICT)
 
++=== back ===
 
[[div style="float: left;"]]
||~ คำอธิบาย || เป็นการหาค่าที่อยู่ด้านปลายของ deque ใช้เวลา [[$ <math>O(1) $]]</math> _
**ข้อควรระวัง : หาก size ของ deque เป็น 0 จะเกิด error** ||
||~ parameter || ไม่มี ||
เส้น 90 ⟶ 76:
[[ผู้ใช้:Nullzero|Nullzero]] ([[คุยกับผู้ใช้:Nullzero|พูดคุย]]) 14:27, 15 มกราคม 2556 (ICT)
 
++=== size ===
 
[[div style="float: left;"]]
||~ คำอธิบาย || เป็นการหาว่าขณะนี้ deque มีขนาดเท่าไหร่ ใช้เวลา [[$ <math>O(1) $]]</math> ||
||~ parameter || ไม่มี ||
||~ return || จำนวนเต็ม บอกถึงขนาดของ deque ||
เส้น 100 ⟶ 86:
[[ผู้ใช้:Nullzero|Nullzero]] ([[คุยกับผู้ใช้:Nullzero|พูดคุย]]) 14:27, 15 มกราคม 2556 (ICT)
 
++=== empty ===
 
[[div style="float: left;"]]
||~ คำอธิบาย || เป็นการหาว่าขณะนี้ deque ว่างหรือไม่ ใช้เวลา [[$ <math>O(1) $]]</math> ||
||~ parameter || ไม่มี ||
||~ return || ค่า true เมื่อ deque ว่าง (ขนาดเป็น 0) _
เส้น 111 ⟶ 97:
[[ผู้ใช้:Nullzero|Nullzero]] ([[คุยกับผู้ใช้:Nullzero|พูดคุย]]) 14:27, 15 มกราคม 2556 (ICT)
 
+== operator ==
++=== [] ===
 
[[div style="float: left;"]]
เส้น 124 ⟶ 110:
 
 
== ตัวอย่างโค้ด ==
+ [[# samplecode]] code STL deque
<source lang="cpp">
[[code type="Cpp"]]
#include <cstdio>
#include <deque>
เส้น 136 ⟶ 122:
 
int main(){
deque <int> Q; // []
Q.push_back(13); // [13]
Q.push_back(12); // [13,12]
Q.pop_front(); // [12]
Q.push_front(11); // [11,12]
Q.pop_back(); // [11]
Q.push_back(5); // [11,5]
printf("%d", Q.back()); // => 5
printf("%d", Q.front()); // => 11
for(int i = 0; i < 4; i++)
Q.push_back(i);
// [11,5,0,1,2,3]
Q.push_front(-1); // [-1,11,5,0,1,2,3]
for(int i = 0; i < Q.size(); i++)
printf("%d ", Q[i]); // => -1 11 5 0 1 2 3
while(!not Q.empty()) Q.pop_back(); // []
// => -1 11 5 0 1 2 3
Q.pop_back() // => Error
while(!Q.empty())
Q.pop_front() // => Error
Q.pop_back();
Q.front() // => Error
// []
Q.pop_backback() // => Error
Q.pop_front() // => Error
ST tmp;
Q.front() // => Error
deque <ST> T; // []
Q.back() // => Error
tmp.a = 5;
tmp.b = 3;
ST tmp;
T.push_back(tmp); // [(5,3)]
deque <ST> T; // []
printf("%d\n", T.front().b); // => 3
tmp.a = 5;
tmp.b = 3;
T.push_back(tmp); // [(5,3)]
printf("%d\n", T.front().b); // => 3
return 0;
}
</source>
[[/code]]
 
[[หมวดหมู่:STL C++]]