Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ฟังก์ชัน begin() และ end() ของ forward_list ใน C++ STL

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) ซึ่งใช้เป็นเงื่อนไขหยุดในการวนลูป