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

forward_list::cbefore_begin() ใน C++ STL


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