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

forward_list ผสาน () ใน C ++ STL


ในบทความนี้เราจะพูดถึงการทำงาน ไวยากรณ์และตัวอย่างของฟังก์ชัน forward_list::merge() ใน C++

Forward_list ใน STL คืออะไร

รายการส่งต่อคือคอนเทนเนอร์ลำดับที่อนุญาตให้ดำเนินการแทรกและลบเวลาคงที่ที่ใดก็ได้ภายในลำดับ รายการส่งต่อถูกนำไปใช้เป็นรายการที่เชื่อมโยงแบบเดี่ยว การจัดลำดับจะถูกเก็บไว้โดยการเชื่อมโยงไปยังแต่ละองค์ประกอบของลิงก์ไปยังองค์ประกอบถัดไปในลำดับ

forward_list::merge() คืออะไร

forward_list::merge() เป็นฟังก์ชัน inbuilt ใน C++ STL ซึ่งประกาศไว้ในไฟล์ส่วนหัว merge() ใช้เพื่อรวม forward_list สองรายการที่เรียงลำดับเป็นหนึ่งเดียว

ก่อนรวมสองรายการ เราต้องตรวจสอบให้แน่ใจว่ารายการอยู่ในลำดับการเรียงลำดับ หากไม่มีเครื่องเปรียบเทียบถูกส่งผ่าน ก็จะรวมสองรายการเข้าเป็นรายการที่เรียงลำดับหนึ่งรายการ เมื่อเราต้องการการเปรียบเทียบภายในระหว่างสองรายการ เราต้องเพิ่มตัวเปรียบเทียบ

ไวยากรณ์

flist_container1.merge(flist_container2); //will merge both lists
flist_container1.merge(flist_container2, comparator);

ฟังก์ชันนี้สามารถรับพารามิเตอร์ได้หนึ่งหรือสองพารามิเตอร์ -

พารามิเตอร์

  • list_container2 - นี่คือเป้าหมายของรายการที่สองที่จะรวมเข้าด้วยกัน

  • ตัวเปรียบเทียบ - สิ่งนี้กำหนดการเปรียบเทียบภายใน นี่คือเพรดิเคตไบนารีที่มีอินพุตสองค่าของค่าเดียวกับที่กำหนดไว้ในคอนเทนเนอร์รายการ โดยจะคืนค่าเป็น จริง หากองค์ประกอบ list_container1 ถูกพิจารณาว่าไปก่อน list_container2 ไม่เช่นนั้น จะเป็นเท็จ

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

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

ตัวอย่าง

/*ในโค้ดด้านล่าง เรากำลังสร้างรายการส่งต่อสองรายการ และทั้งสองรายการได้รับการจัดเรียงแล้ว และงานคือการรวมรายการโดยใช้ฟังก์ชัน merge() ใน C++ ซึ่งควรจัดเรียง*/

#include <bits/stdc++.h>
using namespace std;
int main() {
   //creating forward list by inserting sorted values
   forward_list<int> myForwardList1 = { 1, 3, 5, 7 };
   forward_list<int> myForwardList2 = { 2, 4, 6 };
   // merging two sorted forward lists
   myForwardList1.merge(myForwardList2);
   cout << "elements after merging" << endl;
   for (auto i = myForwardList1.begin(); i != myForwardList1.end(); ++i)
      cout << *i << " ";
   return 0;
}

ผลลัพธ์

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

elements after merging
1 2 3 4 5 6 7

พร้อมตัวเปรียบเทียบ

ตัวอย่าง

/*ในโค้ดด้านล่าง เรากำลังสร้างรายการส่งต่อสองรายการ และทั้งสองรายการไม่ได้เรียงลำดับ และงานคือการจัดเรียงรายการก่อนแล้วจึงรวมรายการโดยใช้ฟังก์ชัน merge() ใน C++ และควรจัดเรียงรายการนั้น*/

#include <bits/stdc++.h>
using namespace std;
int main (){
   //create unsorted forward list
   forward_list<int> myForwardList1 = {3, 2, 9};
   forward_list<int> myForwardList2 = {8, 1, 2};
   //sorting the forward list using sort() function
   myForwardList1.sort();
   myForwardList2.sort();
   myForwardList1.merge(myForwardList2);
   cout << "Elements after merging" << endl;
   for (auto i = myForwardList1.begin(); i != myForwardList1.end(); ++i)
      cout << *i << " ";
   return 0;
}

ผลลัพธ์

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

Elements after merging
1 2 2 3 8 9