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

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


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

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

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

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

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

ไวยากรณ์

list_container.erase(positon);
list_container.erase(start_position, end_position);

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

พารามิเตอร์

  • ตำแหน่ง - นี่คือตำแหน่งเดียวที่เราต้องการที่จะลบองค์ประกอบ

  • start_position, end_position - กำหนดช่วงที่เราต้องการลบองค์ประกอบ

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

ฟังก์ชันนี้ส่งคืนตัววนซ้ำซึ่งชี้ไปถัดจากองค์ประกอบสุดท้ายที่ถูกลบออก

ตัวอย่าง

ในโค้ดด้านล่าง เราต้องลบองค์ประกอบโดยใช้ฟังก์ชัน Erase() ที่มีอยู่ใน STL และเราจะดึงข้อมูลองค์ประกอบแรกโดยใช้ตัววนซ้ำซึ่งจะชี้ไปที่องค์ประกอบแรกโดยใช้ฟังก์ชัน start() และหลังจากนั้นเราจะลบตัววนซ้ำ ที่มีองค์ประกอบแรกของรายการ

#include <bits/stdc++.h>
using namespace std;
int main(){
   //Create a list
   list<int> myList;
   myList.push_back(2);
   myList.push_back(4);
   myList.push_back(6);
   myList.push_back(8);
   myList.push_back(10);
   cout<<"List before deleting elements: ";
   for (auto i = myList.begin(); i!= myList.end(); i++){
      cout << *i<< " ";
   }
   //iterator that will point to the first element
   list<int>::iterator i = myList.begin();
   myList.erase(i);
   //list after deleting the element
   cout << "\nList after deleting elements: ";
   for (auto i = myList.begin(); i!= myList.end(); i++){
      cout << *i << " ";
   }
   return 0;
}

ผลลัพธ์

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

List before deleting elements: 2 4 6 8 10
List after deleting elements: 4 6 8 10

ตัวอย่าง

ในโค้ดด้านล่าง เราต้องลบองค์ประกอบโดยใช้ฟังก์ชัน Erase() ที่มีอยู่ใน STLand เพื่อที่เราจะดึงองค์ประกอบแรกโดยใช้ตัววนซ้ำ (iterator 1) ที่จะชี้ไปที่องค์ประกอบแรกโดยใช้ฟังก์ชัน start() และเราจะเอาอีก iterator(ตัววนซ้ำ 2) เพื่อชี้ไปที่องค์ประกอบที่สอง และหลังจากนั้น เราจะลบตัววนซ้ำจากช่วงระหว่างตัววนซ้ำ 1 และตัววนซ้ำ 2 และแสดงผลลัพธ์

#include <bits/stdc++.h>
using namespace std;
int main(){
   //Create a list
   list<int> myList;
   myList.push_back(2);
   myList.push_back(4);
   myList.push_back(6);
   myList.push_back(8);
   myList.push_back(10);
   cout<<"List before deleting elements: ";
   for (auto i = myList.begin(); i!= myList.end(); i++){
      cout << *i << " ";
   }
   //iterator that will point to the first element
   list<int>::iterator i_1, i_2;
   i_1 = myList.begin();
   i_2 = myList.begin();
   //advance() function will increment the position of iterator 2 by 3
   advance(i_2, 4);
   //now it will delete the elements from the range 0 - 4
   myList.erase(i_1, i_2);
   //list after deleting the element
   cout<< "\nList after deleting elements: ";
   for (auto i = myList.begin(); i!= myList.end(); i++){
      cout << *i << " ";
   }
   return 0;
}

ผลลัพธ์

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

List before deleting elements: 2 4 6 8 10
List after deleting elements: 10