Forward_list ใน STL คืออะไร?
Forward list เป็นคอนเทนเนอร์แบบลำดับที่อนุญาตให้แทรกและลบข้อมูลได้ในเวลาคงที่ (constant time) ทุกตำแหน่งภายในลำดับ Forward list ถูกนำมาใช้งานเป็น singly-linked list (รายการเชื่อมโยงเดี่ยว) การจัดลำดับถูกเก็บรักษาโดยการเชื่อมโยงแต่ละองค์ประกอบไปยังองค์ประกอบถัดไปในลำดับ
forward_list::operator = คืออะไร?
ตัวดำเนินการกำหนดค่า (operator=) ของ forward_list ใช้สำหรับกำหนดค่าใหม่ให้กับคอนเทนเนอร์ forward_list โดยการแทนที่ค่าที่มีอยู่เดิม ตัวดำเนินการนี้ยังปรับเปลี่ยนขนาดของคอนเทนเนอร์ forward_list ตามค่าใหม่ด้วย
ไวยากรณ์ (Syntax)
forward_container1 = forward_container2;
ฟังก์ชันนี้ยอมรับ forward_list อีกตัวหนึ่งที่มีชนิดข้อมูลเหมือนกัน
ค่าที่ส่งคืน (Return Value)
ส่งคืนพอยน์เตอร์ *this
ตัวอย่างการใช้งาน
ในโค้ดด้านล่าง เราสร้าง forward list สองตัวและแทรกข้อมูล จากนั้นใช้ตัวดำเนินการ = เพื่อทับซ้อนข้อมูลของ forward list 1 ด้วย forward list 2
#include <forward_list>
#include <iostream>
using namespace std;
int main() {
forward_list<int> forwardList1 = {10, 20, 30};
forward_list<int> forwardList2 = {0, 1, 2, 3};
forwardList1 = forwardList2;
cout << "forwardList1 หลังใช้ operator = กับ forwardList2\n";
for (auto i = forwardList1.begin(); i != forwardList1.end(); ++i)
cout << ' ' << *i;
return 0;
}
ผลลัพธ์ (Output)
forwardList1 หลังใช้ operator = กับ forwardList2 0 1 2 3
ตัวอย่างเพิ่มเติม: ตรวจสอบสถานะของ forward list ต้นทาง
ตัวอย่างนี้ตรวจสอบว่า forward list 2 จะเปลี่ยนแปลงหรือไม่หลังจากการกำหนดค่า
#include <forward_list>
#include <iostream>
using namespace std;
int main() {
forward_list<int> forwardList1 = {10, 20, 30};
forward_list<int> forwardList2 = {0, 1, 2, 3};
forwardList1 = forwardList2;
cout << "forwardList1 หลังใช้ operator = กับ forwardList2\n";
for (auto i = forwardList1.begin(); i != forwardList1.end(); ++i)
cout << ' ' << *i;
cout << "\nforwardList2 หลังใช้ operator = กับ forwardList1\n";
for (auto i = forwardList2.begin(); i != forwardList2.end(); ++i)
cout << ' ' << *i;
return 0;
}
ผลลัพธ์ (Output)
forwardList1 หลังใช้ operator = กับ forwardList2 0 1 2 3 forwardList2 หลังใช้ operator = กับ forwardList1 0 1 2 3
หมายเหตุ: การกำหนดค่าจะทำการคัดลอกข้อมูล (copy assignment) ดังนั้น forward list ต้นทาง (forwardList2) จะคงค่าเดิมไว้ ไม่ได้ถูกย้ายหรือลบข้อมูล