กำหนดให้เป็นหน้าที่แสดงการทำงานของฟังก์ชัน forward_list::cbefore_begin() ใน C++
forward_list จะรักษาความเชื่อมโยงกับองค์ประกอบถัดไปเท่านั้น ซึ่งแตกต่างจากรายการปกติที่เชื่อมโยงกับองค์ประกอบถัดไปและองค์ประกอบก่อนหน้า ซึ่งช่วยให้ทำซ้ำได้ในทั้งสองทิศทาง แต่ forward_list วนซ้ำได้ในทิศทางไปข้างหน้าเท่านั้น
ฟังก์ชัน forward_list::cbefore_begin() เป็นส่วนหนึ่งของไลบรารีเทมเพลตมาตรฐาน C++ ใช้เพื่อรับตำแหน่งก่อนองค์ประกอบแรกของรายการ
ไวยากรณ์
Forward_List_Name.cbefore_begin();
พารามิเตอร์
ฟังก์ชันนี้ไม่รับพารามิเตอร์ใดๆ
ผลตอบแทนที่ได้รับ
ฟังก์ชันส่งคืนตัววนซ้ำคงที่ซึ่งชี้ไปที่ตำแหน่งก่อนองค์ประกอบแรกของ forward_list
ตัวอย่าง
Input: 8, 9, 32, 21 Output: 56 8 9 32 21
คำอธิบาย − ที่นี่เราสร้างรายการส่งต่อที่มีองค์ประกอบ 8,9,32,21 จากนั้นเราเรียกฟังก์ชัน cbefore_begin() ที่ชี้ไปที่ตำแหน่งก่อนองค์ประกอบแรกของรายการ และเก็บตำแหน่งนั้นไว้ใน itrator itr จากนั้นเราใช้ฟังก์ชัน insert_after() เพื่อแทรกองค์ประกอบ 56 ที่ตำแหน่งก่อนองค์ประกอบแรก นั่นคือ 8 ดังนั้นเมื่อเราพิมพ์ ผลลัพธ์ที่สร้างคือ 56 8 9 32 21 ซึ่งแสดงว่า 56 อยู่ที่จุดเริ่มต้นของ รายการและด้วยเหตุนี้ฟังก์ชัน cbefore_begin () จึงทำงานได้อย่างถูกต้อง
แนวทางที่ใช้ในโปรแกรมด้านล่างดังนี้ −
- ขั้นแรกให้สร้าง forward_list ให้เราพูดว่า "Lt" ของ type int และกำหนดค่าบางอย่างให้กับมัน
- จากนั้นสร้างอ็อบเจ็กต์ "itr" ประเภท auto และเก็บไว้ในนั้น iterator ส่งคืนโดยการเรียกฟังก์ชัน cbefore_begin()
- จากนั้นใช้ฟังก์ชัน insert_after() เพื่อแทรกองค์ประกอบใหม่ที่จุดเริ่มต้นของรายการ ส่งตัววนซ้ำ “itr” เป็นอาร์กิวเมนต์แรกและป้อนตัวเลขเป็นอาร์กิวเมนต์ที่สอง
- จากนั้นเริ่ม For loop เพื่อพิมพ์รายการ
- จากนั้นสร้างอ็อบเจ็กต์ "itr" ประเภท auto ภายในลูป for เพื่อรับค่าส่งคืนของฟังก์ชัน end() และ start() เริ่มต้น "itr" โดยกำหนดให้เป็นองค์ประกอบแรกของรายการโดยใช้ฟังก์ชัน begin()
- จากนั้นระบุเงื่อนไขการสิ้นสุดของลูป for โดยเขียน "itr" ไม่เท่ากับองค์ประกอบสุดท้ายของรายการโดยใช้ฟังก์ชัน cend()
- พิมพ์ *itr.
อัลกอริทึม
Start Step 1->In function main() Initialize forward_list<int> Lt={} Initialize auto itr= Lt.cbefore_begin() Call insert_after(itr, new_element) Loop For auto itr = Ltcbegin() and itr != Lt.end() and itr++ Print *itr End Stop
ตัวอย่าง
#include<iostream> #include<forward_list> using namespace std; int main() { forward_list<int> Lt = { 40, 55, 67, 89 }; auto itr = Lt.cbefore_begin(); Lt.insert_after(itr, 77); for (auto itr = Lt.begin(); it != Lt.end(); ++itr) cout << *itr << " "; return 0; }
ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -
77 40 55 67 89