ในบทความนี้เราจะอธิบายการทำงาน ไวยากรณ์ และตัวอย่างของฟังก์ชัน deque::at() และ deque::swap() ใน C++ Standard Template Library (STL)
Deque คืออะไร?
Deque (Double Ended Queue) เป็นคอนเทนเนอร์ลำดับที่ให้ฟังก์ชันการขยายและหดตัวได้ที่ทั้งสองปลาย โครงสร้าง queue ทั่วไปอนุญาตให้แทรกข้อมูลเฉพาะที่ปลาย (END) และลบข้อมูลจากหน้า (FRONT) เท่านั้น ส่วน Deque อนุญาตให้แทรกและลบข้อมูลได้ที่ทั้งสองปลาย
deque::at() คืออะไร?
deque::at() เป็นฟังก์ชันในตัวของ C++ STL ที่ประกาศใน header file <deque> ฟังก์ชันนี้ส่งคืน reference ที่ใช้ชี้ไปยังองค์ประกอบที่ตำแหน่งที่ระบุใน deque ฟังก์ชันจะไปยังองค์ประกอบที่ตำแหน่งที่ส่งผ่านเป็นอาร์กิวเมนต์ ตำแหน่งเริ่มจาก 0
ไวยากรณ์ (Syntax)
mydeque.at(int position);
พารามิเตอร์ (Parameters)
รับพารามิเตอร์หนึ่งคือตำแหน่งที่ต้องการชี้
ค่าที่ส่งคืน (Return Value)
ส่งคืน reference ไปยังองค์ประกอบที่ตำแหน่งที่ระบุของ deque container
ตัวอย่างการใช้งาน
Input: deque<int> mydeque = {10, 20, 30, 40};
mydeque.at(2);
Output: Element at 2 positions is 30
ตัวอย่างโค้ดเต็ม
#include <deque>
#include <iostream>
using namespace std;
int main() {
deque<int> myDeque;
myDeque.push_back(90);
myDeque.push_back(80);
myDeque.push_back(70);
myDeque.push_back(60);
myDeque.push_back(50);
myDeque.push_back(40);
myDeque.push_back(30);
myDeque.push_back(20);
myDeque.push_back(10);
for (int i = 0; i < myDeque.size(); ++i) {
if (i % 2 == 0) {
cout << myDeque.at(i);
cout << " ";
}
}
return 0;
}
ผลลัพธ์ (Output)
90 70 50 30 10
deque::swap() คืออะไร?
deque::swap() เป็นฟังก์ชันในตัวของ C++ STL ที่ประกาศใน header file <deque> ฟังก์ชันนี้ใช้สำหรับ สลับเนื้อหา ระหว่าง deque container หนึ่งกับอีก deque container หนึ่ง ฟังก์ชันรับออบเจ็กต์ของ deque อีกอันที่ต้องการสลับข้อมูล
ไวยากรณ์ (Syntax)
mydeque1.swap(mydeque2);
พารามิเตอร์ (Parameters)
รับพารามิเตอร์หนึ่งคือ reference ไปยัง deque ที่ต้องการสลับข้อมูล
ค่าที่ส่งคืน (Return Value)
ฟังก์ชันนี้ไม่ส่งคืนค่าใดๆ (void)
ตัวอย่างการใช้งาน
Input: deque<int> even = {2, 4, 6, 8};
deque<int> odd = {1, 3, 5, 7};
even.swap(odd);
Output: Even deque: 1 3 5 7
Odd deque: 2 4 6 8
ตัวอย่างโค้ดเต็ม
#include <deque>
#include <iostream>
using namespace std;
int main() {
deque<int> Deque_1 = { 1, 2, 3, 4 };
deque<int> Deque_2 = { 3, 5, 7, 9 };
Deque_1.swap(Deque_2);
cout << "Deque_1 elements after swapping : ";
for (auto i = Deque_1.begin(); i != Deque_1.end(); ++i)
cout << *i << " ";
cout << endl << "Deque_2 elements after swapping : ";
for (auto i = Deque_2.begin(); i != Deque_2.end(); ++i)
cout << *i << " ";
return 0;
}
ผลลัพธ์ (Output)
Deque_1 elements after swapping : 3 5 7 9 Deque_2 elements after swapping : 1 2 3 4