Forward_list ใน STL คืออะไร?
Forward list เป็นคอนเทนเนอร์แบบลำดับที่อนุญาตให้แทรกและลบข้อมูลได้ในเวลาคงที่ (constant time) ทุกตำแหน่งภายในลำดับ Forward list ถูกนำมาใช้งานเป็น singly-linked list (รายการเชื่อมโยงเดี่ยว) การจัดลำดับถูกเก็บรักษาโดยการเชื่อมโยงแต่ละองค์ประกอบไปยังองค์ประกอบถัดไปในลำดับ
forward_list::begin() คืออะไร?
forward_list::begin() เป็นฟังก์ชันในตัวใน C++ STL ที่ประกาศในไฟล์หัวข้อ <forward_list> ฟังก์ชัน begin() ส่งคืนอิเทอเรเตอร์ที่อ้างอิงถึงองค์ประกอบแรกในคอนเทนเนอร์ forward_list เรามักใช้ begin() และ end() ร่วมกันเพื่อกำหนดช่วงของคอนเทนเนอร์ forward_list
ไวยากรณ์ (Syntax)
forwardlist_container.begin();
ฟังก์ชันนี้ไม่รับพารามิเตอร์
ค่าที่ส่งคืน (Return Value)
ส่งคืนอิเทอเรเตอร์แบบ forward iterator ที่ชี้ไปยังองค์ประกอบแรกของคอนเทนเนอร์ (ไม่ใช่ bidirectional iterator เนื่องจาก forward_list เป็น singly-linked list)
ตัวอย่างการใช้งาน begin() และ end()
#include <forward_list>
#include <iostream>
using namespace std;
int main() {
// สร้าง forward list
forward_list<int> forwardList = {4, 1, 2, 7};
cout << "พิมพ์องค์ประกอบของ forward List\n";
// ใช้ begin() ชี้ไปยังองค์ประกอบแรก และ end() ชี้ไปยังตำแหน่งหลังองค์ประกอบสุดท้าย
for (auto i = forwardList.begin(); i != forwardList.end(); ++i)
cout << ' ' << *i;
return 0;
}
ผลลัพธ์ (Output)
พิมพ์องค์ประกอบของ forward List 4 1 2 7
forward_list::end() คืออะไร?
forward_list::end() เป็นฟังก์ชันในตัวใน C++ STL ที่ประกาศในไฟล์หัวข้อ <forward_list> ฟังก์ชัน end() ส่งคืนอิเทอเรเตอร์ที่อ้างอิงถึงตำแหน่งหลังองค์ประกอบสุดท้าย (past-the-end) ในคอนเทนเนอร์ forward_list ไม่ใช่ชี้ไปที่องค์ประกอบสุดท้ายโดยตรง
ไวยากรณ์ (Syntax)
forwardlist_container.end();
ฟังก์ชันนี้ไม่รับพารามิเตอร์
ค่าที่ส่งคืน (Return Value)
ส่งคืนอิเทอเรเตอร์แบบ forward iterator ที่ชี้ไปยังตำแหน่งหลังองค์ประกอบสุดท้าย (past-the-end)
หมายเหตุสำคัญ: บทความต้นฉบับระบุว่า end() ส่งคืน "iterator ชี้ไปยังองค์ประกอบสุดท้าย" ซึ่ง ไม่ถูกต้อง สำหรับ forward_list (และคอนเทนเนอร์ STL ทุกตัว) end() จะส่งคืนอิเทอเรเตอร์ที่ชี้ไปยังตำแหน่ง หลัง องค์ประกอบสุดท้าย (past-the-end) ซึ่งใช้เป็นเงื่อนไขหยุดในการวนลูป