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

รายการผสาน () ฟังก์ชั่นใน C ++ STL


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

รายการใน STL คืออะไร

รายการเป็นโครงสร้างข้อมูลที่อนุญาตให้แทรกและลบเวลาคงที่ได้ทุกที่ตามลำดับ รายการถูกนำไปใช้เป็นรายการที่เชื่อมโยงเป็นสองเท่า รายการอนุญาตการจัดสรรหน่วยความจำที่ไม่ต่อเนื่องกัน List ทำการดึงการแทรกและย้ายองค์ประกอบได้ดีกว่าในตำแหน่งใดๆ ในคอนเทนเนอร์ มากกว่าอาร์เรย์ เวกเตอร์ และ deque ใน List การเข้าถึงองค์ประกอบโดยตรงนั้นช้าและ list นั้นคล้ายกับ forward_list แต่ออบเจกต์ของรายการส่งต่อเป็นรายการที่เชื่อมโยงเพียงรายการเดียว และสามารถทำซ้ำได้เพียงส่งต่อเท่านั้น

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

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

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

ไวยากรณ์

list_container1.merge(list_container2); //will merge both lists in list_container1
list_container1.merge(list_container2, comparator);

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

พารามิเตอร์

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

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

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

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

ไม่มีตัวเปรียบเทียบ

ตัวอย่าง

ในโค้ดด้านล่าง เรากำลังสร้างรายการที่เรียงลำดับแล้วสองรายการ และงานคือการผสานรายการและผลลัพธ์ที่ได้ก็ควรได้รับการจัดเรียงด้วย

#include <bits/stdc++.h>
using namespace std;
int main(){
   //creating the sorted list
   list<int> myList_1 = {2, 4, 6, 8 };
   list<int> myList_2 = {1, 3, 5, 7 };
   //using merge() function to merge the lists
   myList_2.merge(myList_1);
   cout <<"Lists after merging : ";
   for(auto i = myList_2.begin(); i != myList_2.end(); ++i)
      cout << *i << " ";
   return 0;
}

ตัวอย่าง

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

Lists after merging : 1 2 3 4 5 6 7 8

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

ตัวอย่าง

ในโค้ดด้านล่าง เราต้องรวมสองรายการเข้าด้วยกันแล้วจัดเรียงรายการที่สร้างขึ้นเป็นผลลัพธ์สุดท้าย

#include <bits/stdc++.h>
using namespace std;
bool compare(int myList_1, int myList_2){
   return ( int(myList_1)<int(myList_2) );
}
int main(){
   //create a list
   list<int> myList_1 = {2, 4, 1 };
   list<int> myList_2 = {7, 6, 5 };
   myList_1.sort();
   myList_2.sort();
   //using merge() function to merge the lists
   myList_1.merge(myList_2);
   myList_2.push_back (3);
   myList_1.merge(myList_2,compare);
   cout<<"List Elements are : ";
   for(auto i = myList_1.begin(); i!=myList_1.end(); ++i)
      cout<< ' ' << *i;
   return 0;
}

ผลลัพธ์

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

List Elements are : 1 2 3 4 5 6 7