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

forward_list emplace_after() และ emplace_front() ใน C ++ STL


กำหนดให้เป็นหน้าที่แสดงการทำงานของฟังก์ชัน forward_list::emplace_after() และ forward_list::emplace_front() ใน c++

forward_list จะรักษาความเชื่อมโยงกับองค์ประกอบถัดไปเท่านั้น ซึ่งแตกต่างจากรายการปกติที่เชื่อมโยงกับองค์ประกอบถัดไปและองค์ประกอบก่อนหน้า ซึ่งช่วยให้ทำซ้ำได้ในทั้งสองทิศทาง แต่ forward_list วนซ้ำได้ในทิศทางไปข้างหน้าเท่านั้น

ฟังก์ชัน forward_list::emplace_after() และ forward_list::emplace_front() เป็นส่วนหนึ่งของไลบรารีมาตรฐาน c++

ฟังก์ชัน forward_list::emplace_after() ใช้เพื่อแทรกองค์ประกอบใหม่ในรายการหลังจากองค์ประกอบที่ระบุตำแหน่งภายในอาร์กิวเมนต์

ฟังก์ชัน forward_list::emplace_front() ใช้เพื่อแทรกองค์ประกอบที่จุดเริ่มต้นของรายการ

ควรรวมไฟล์ส่วนหัวเพื่อเรียกใช้ฟังก์ชัน

forward_list::emplace_after()

ไวยากรณ์

Forward_List_Name.emplace_after(iterator , element);

พารามิเตอร์

ฟังก์ชันยอมรับสองพารามิเตอร์ -

ตัววนซ้ำ , iterator มีตำแหน่งที่จะต้องวางองค์ประกอบใหม่

องค์ประกอบ , มันมีองค์ประกอบที่จะต้องวาง.

ผลตอบแทนที่ได้รับ

ฟังก์ชันส่งคืนตัววนซ้ำที่ชี้ไปยังองค์ประกอบใหม่ที่ถูกวางไว้ในรายการส่งต่อ

forward_list::emplace_front()

ไวยากรณ์

Forward_List_Name.emplace_front(element);

พารามิเตอร์

ฟังก์ชันนี้ยอมรับพารามิเตอร์หนึ่งตัว

ผลตอบแทนที่ได้รับ

ฟังก์ชันไม่ส่งคืนสิ่งใด

ตัวอย่าง

Input: 11,34,56
Output: 41 11 34 56

คำอธิบาย

ที่นี่เราสร้างรายการส่งต่อ Lt พร้อมองค์ประกอบ 11,34,56 จากนั้นเราเรียกฟังก์ชัน emplace_front() ที่ใช้ในการแทรกองค์ประกอบใหม่ที่จุดเริ่มต้นของรายการส่งต่อ และที่นี่องค์ประกอบนั้นคือ 41

ดังนั้นเมื่อเราพิมพ์รายการส่งต่อ ผลลัพธ์ที่สร้างคือ 41 11 34 56 ซึ่งมีองค์ประกอบแรกเป็น 41

แนวทางที่ใช้ในโปรแกรมด้านล่างดังนี้

  • ขั้นแรกให้สร้างรายการ ให้เราพูดว่า "Lt" ของประเภท int และกำหนดค่าบางอย่างให้กับมัน
  • จากนั้นเรียกใช้ฟังก์ชัน emplace_front() เพื่อวางองค์ประกอบใหม่ที่จุดเริ่มต้นของรายการ
  • จากนั้นสร้างวัตถุประเภท auto ให้เราพูดว่า "itr" ที่จะทำงานเป็นตัววนซ้ำของเราเพื่อเก็บตำแหน่งที่จะส่งผ่านไปยังตำแหน่ง emplace_after() ถัดจากตำแหน่งที่จะวางองค์ประกอบใหม่ของเรา ระบุตำแหน่ง ให้เราพูดว่า จุดสิ้นสุดของรายการ
  • จากนั้นเรียกใช้ฟังก์ชัน emplace_after() เพื่อเข้าสู่องค์ประกอบในตำแหน่งที่ระบุ อาร์กิวเมนต์แรกควรเป็นตัววนซ้ำ "itr" ที่ระบุตำแหน่งในรายการ และอาร์กิวเมนต์ที่สองควรเป็นองค์ประกอบที่จะวางที่ตำแหน่งนั้น

อัลกอริทึม

Start
Step 1->In function main()
   Initialize forward_list<int> Lt={}
   Call function Lt.emplace_front()
   Initialize auto itr=Lt.end();
   Call Lt.emplace_after(itr , element)
   End
Stop

ตัวอย่าง

#include<iostream>
#include<list>
using namespace std;
int main() {
   forward_list<int> Lt = { 5,6,7,8 };
   //Using the emplace_front() function to place element at the beginning.
   Lt.emplace_front(3);
   auto itr = Lt.end();
   /*Using the emplace_after() function to place an element after the location specified*/
   Lt.emplace_after(itr , 10)
   //Displaying the list
   for(auto itr = Lt.begin() ; itr!=Lt.end ; itr++)
   cout<<” *itr ”<<” ”;
   return 0;
}

ผลลัพธ์

หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -

3 5 6 7 8 10