กำหนดให้เป็นหน้าที่แสดงการทำงานของฟังก์ชัน 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