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

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


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

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

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

รายการ::splice() คืออะไร

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

ไวยากรณ์

This function’s syntax can be defined as 3 ways:
list1.splice(position, list2);
list1.splice(position, list2, i);
list1.splice(position, list2, first, last);

พารามิเตอร์

  • ตำแหน่ง − ตำแหน่งของรายการที่เราต้องการให้โอนย้ายองค์ประกอบ

  • รายการ2 − รายการจากที่เราต้องการโอนองค์ประกอบ

  • i:เป็นตัววนซ้ำซึ่งระบุตำแหน่งของ list2 จากตำแหน่งที่องค์ประกอบที่เราต้องการโอนไปจนสิ้นสุด list2

  • ครั้งแรก สุดท้าย − ทั้งสองสิ่งนี้เป็นตัววนซ้ำที่กำหนดตำแหน่งเริ่มต้นและสิ้นสุดของ list2 ที่เราต้องการโอนองค์ประกอบ

ตัวอย่าง

Input: list<int> List_container= { 10, 11, 13, 15};
      list<int> List2 = {1, 2, 3, 4};
      List_container.splice(2, List2);
Output:
      List_container= 10 11 13 15 3 4
      List2 = 1 2

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

ฟังก์ชันนี้จะคืนค่าตัววนซ้ำย้อนกลับที่ชี้ไปยังองค์ประกอบสุดท้ายของรายการ Reverse iterator คือตัววนซ้ำที่เคลื่อนที่ในทิศทางย้อนกลับ

#include <bits/stdc++.h>
using namespace std;
int main(){
   list<int> myList_1 = { 10, 20, 30, 40 };
   list<int> myList_2 = { 50, 60 };
   list<int>::iterator i;
   i = myList_2.begin();
   myList_1.splice(myList_1.end(), myList_2, i);
      cout<<"list after splice operation" << endl;
   for (auto temp : myList_1)
      cout << temp << " ";
   return 0;
}

ผลลัพธ์

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

list after splice operation
10 20 30 40 50

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;
int main(){
   list<int> myList_1 = { 10, 20};
   list<int> myList_2 = { 30, 40, 50};
   list<int> myList_3 = {60};
   myList_1.splice(myList_1.begin(), myList_2);
      cout << "list 1 after splice operation" << endl;
   for (auto x : myList_1)
      cout << x << " ";
   myList_3.splice(myList_3.end(), myList_1);
      cout << "\nlist 3 after splice operation" << endl;
   for (auto x : myList_3)
      cout << x << " ";
   return 0;
}

ผลลัพธ์

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

list 1 after splice operation
30 40 50 10 20
list 1 after splice operation
60 30 40 50 10 20