ฟังก์ชันการลบเวกเตอร์ () ใน C ++

Vector Erase Function C



อาร์เรย์ใช้เพื่อจัดเก็บข้อมูลหลายรายการ และไม่สามารถเปลี่ยนแปลงจำนวนองค์ประกอบของอาร์เรย์ได้ในขณะทำงาน ปัญหานี้สามารถแก้ไขได้โดยใช้เวกเตอร์ที่ทำงานเหมือนไดนามิกอาร์เรย์ มีฟังก์ชันที่แตกต่างกันในคลาสเวกเตอร์เพื่อเพิ่มและลบองค์ประกอบออกจากเวกเตอร์ ฟังก์ชัน Erase() ใช้เพื่อลบองค์ประกอบอย่างน้อยหนึ่งรายการออกจากเวกเตอร์ ณ เวลาที่รันซึ่งลดขนาดของเวกเตอร์ การใช้งานฟังก์ชันนี้ได้อธิบายไว้ในบทช่วยสอนนี้

ไวยากรณ์:

ไวยากรณ์สองประเภทของฟังก์ชันนี้ได้รับด้านล่าง







iterator ลบ(ตำแหน่งวนซ้ำ);

ฟังก์ชัน Erase() ด้านบนใช้เพื่อลบองค์ประกอบเดียวออกจากเวกเตอร์ และส่งคืนตัววนซ้ำ และชี้ไปยังองค์ประกอบที่ตามด้วยองค์ประกอบที่ลบล่าสุด



iterator ลบ(iterator beginning_position, ตัววนซ้ำ ending_position);

ฟังก์ชัน Erase() ด้านบนใช้เพื่อลบองค์ประกอบหลายรายการออกจากเวกเตอร์ตามตำแหน่งที่กล่าวถึงในอาร์กิวเมนต์ที่หนึ่งและที่สองของฟังก์ชันนี้



ข้อกำหนดเบื้องต้น:

ก่อนตรวจสอบตัวอย่างของบทช่วยสอนนี้ คุณต้องตรวจสอบก่อนว่าคอมไพเลอร์ g++ ติดตั้งหรือไม่อยู่ในระบบ หากคุณกำลังใช้ Visual Studio Code ให้ติดตั้งส่วนขยายที่จำเป็นเพื่อคอมไพล์ซอร์สโค้ด C++ เพื่อสร้างโค้ดที่เรียกใช้งานได้ ที่นี่ แอปพลิเคชัน Visual Studio Code ถูกใช้เพื่อคอมไพล์และรันโค้ด C++ การใช้งานที่แตกต่างกันของฟังก์ชัน Erase() เพื่อแทรกองค์ประกอบลงในเวกเตอร์ได้แสดงไว้ด้านล่าง





ตัวอย่างที่ 1: ลบองค์ประกอบองค์ประกอบแรก

สร้างไฟล์ C++ ด้วยรหัสต่อไปนี้เพื่อลบองค์ประกอบออกจากจุดเริ่มต้นของเวกเตอร์ มีการใช้เวกเตอร์ของค่าสตริงในโค้ด ค่าของเวกเตอร์ได้รับการพิมพ์ก่อนและหลังการลบองค์ประกอบแรกจากเวกเตอร์โดยใช้ฟังก์ชัน Erase() ด้วยพารามิเตอร์เดียว

//รวมไลบรารีที่จำเป็น

#รวม

#รวม

โดยใช้ เนมสเปซชั่วโมง;

//แสดงค่าของเวกเตอร์

โมฆะdisplay_vector(เวกเตอร์<สตริง>ผลไม้)

{

//เริ่มต้นตัวนับ

intเคาน์เตอร์= 1;

//วนซ้ำและพิมพ์องค์ประกอบของเวกเตอร์โดยใช้ลูป

สำหรับ (รถยนต์เขา=ผลไม้เริ่ม();เขา!=ผลไม้จบ();เขา++)

{

//ตรวจสอบว่าองค์ประกอบเป็นองค์ประกอบสุดท้ายหรือไม่

ถ้า(เคาน์เตอร์!=ผลไม้ขนาด())

ค่าใช้จ่าย << *เขา<< ',';

อื่น

ค่าใช้จ่าย << *เขา;

//เพิ่มตัวนับ 1

เคาน์เตอร์++;

}

ค่าใช้จ่าย <<endl;

}

intหลัก(โมฆะ) {

//ประกาศเวกเตอร์ของข้อมูลสตริง

เวกเตอร์<สตริง>ผลไม้= { 'ส้ม','กล้วย','มะม่วง','แจ็คฟรุต','ลิจิ' };

//พิมพ์ค่าที่มีอยู่ของเวกเตอร์

ค่าใช้จ่าย << 'ค่าของเวกเตอร์ก่อนลบ:' <<endl;

display_vector(ผลไม้);

//ลบองค์ประกอบแรกออกจากเวกเตอร์

ผลไม้ลบ(ผลไม้เริ่ม());

//พิมพ์ค่าที่มีอยู่ของเวกเตอร์หลังจากลบออก

ค่าใช้จ่าย << 'NSค่าของเวกเตอร์หลังจากลบ: ' <<endl;

display_vector(ผลไม้);

กลับ 0;

}

เอาท์พุท:

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



ตัวอย่างที่ 2: ลบองค์ประกอบหลายรายการ

สร้างไฟล์ C++ ด้วยรหัสต่อไปนี้เพื่อลบองค์ประกอบหลายรายการออกจากเวกเตอร์โดยใช้ฟังก์ชัน Erase() มีการใช้เวกเตอร์ของค่าจำนวนเต็มในโค้ด มีการใช้ตัววนซ้ำสองตัวที่นี่เพื่อกำหนดช่วงขององค์ประกอบที่ลบออกจากเวกเตอร์ มีการใช้ฟังก์ชัน Erase() กับพารามิเตอร์สองตัวเพื่อลบองค์ประกอบหลายรายการออกจากเวกเตอร์

//รวมไลบรารีที่จำเป็น

#รวม

#รวม

โดยใช้ เนมสเปซชั่วโมง;

//แสดงเวกเตอร์

โมฆะdisplay_vector(เวกเตอร์<int>ตัวเลข)

{

//พิมพ์ค่าของเวกเตอร์โดยใช้ลูป

สำหรับ(รถยนต์เขา=เลขที่เริ่ม();เขา!=เลขที่จบ() ;เขา++)

ค่าใช้จ่าย << *เขา<< '';

//เพิ่มบรรทัดใหม่

ค่าใช้จ่าย << 'NS';

}

intหลัก() {

//ประกาศเวกเตอร์ของข้อมูลจำนวนเต็ม

เวกเตอร์<int>intArray{ 678,435,960,231,800,387,634,267,409,294};

//พิมพ์ค่าที่มีอยู่ของเวกเตอร์

ค่าใช้จ่าย << 'ค่าของเวกเตอร์ก่อนลบ:' <<endl;

display_vector(intArray);

//ประกาศตัววนซ้ำสองตัวเพื่อลบช่วงขององค์ประกอบออกจาก vector

เวกเตอร์<int> :: iteratorstartEle, endEle;

//ตั้งค่าตัววนซ้ำไปที่ตำแหน่งแรก

startEle=intArrayเริ่ม();

//เพิ่มตัววนเริ่มต้นขึ้น 2

ก้าวหน้า(สตาร์ทเอเล่,2);

//ตั้งค่า iterator ไปที่ตำแหน่งสุดท้าย

endEle=intArrayจบ();

// ลดตัววนซ้ำสิ้นสุดโดย 3

ก้าวหน้า(จบเอเล่,-3);

//ลบช่วงขององค์ประกอบ

intArrayลบ(startEle, endEle);

//พิมพ์ค่าที่มีอยู่ของเวกเตอร์หลังจากลบออก

ค่าใช้จ่าย << 'NSค่าของเวกเตอร์หลังจากลบ: ' <<endl;

display_vector(intArray);

กลับ 0;

}

เอาท์พุท:

ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันโค้ดด้านบน ตามช่วงของการวนซ้ำ องค์ประกอบจากตำแหน่งที่ 3 ถึงตำแหน่งที่ 7 ของเวกเตอร์ได้ถูกลบออกแล้ว

ตัวอย่างที่ 3: ลบองค์ประกอบเฉพาะ

สร้างไฟล์ C++ ด้วยรหัสต่อไปนี้เพื่อลบองค์ประกอบเฉพาะของเวกเตอร์โดยใช้ฟังก์ชัน Erase() มีการประกาศเวกเตอร์ขององค์ประกอบจำนวนเต็ม 7 รายการในโค้ด ถัดไป วง 'for' ใช้เพื่อวนซ้ำองค์ประกอบเวกเตอร์และลบองค์ประกอบเหล่านั้นออกจากเวกเตอร์ที่หารด้วย 5 ไม่ลงตัว

//รวมไลบรารีที่จำเป็น

#รวม

#รวม

โดยใช้ เนมสเปซชั่วโมง;

intหลัก()

{

//ประกาศเวกเตอร์ของข้อมูลจำนวนเต็ม

เวกเตอร์<int>ตัวเลข= { 78,สี่ห้า,67,25,98,75,52 };

ค่าใช้จ่าย << 'ค่าของเวกเตอร์ก่อนลบ:NS';

สำหรับ (int const &ผม:ตัวเลข) {

ค่าใช้จ่าย <<ผม<< '';

}

ค่าใช้จ่าย <<endl;

//เอาตัวเลขออกจากเวกเตอร์ที่หารด้วย 5 . ไม่ได้

สำหรับ (รถยนต์เขา=ตัวเลขเริ่ม();เขา!=ตัวเลขจบ();เขา++)

{

//ตรวจสอบตัวเลขว่าหารด้วย 5 ลงตัวหรือไม่

ถ้า (*เขา% 5 != 0)

{

//ลบองค์ประกอบตามตัววนซ้ำ

ตัวเลขลบ(เขา-);

}

}

ค่าใช้จ่าย << 'ค่าของเวกเตอร์หลังจากลบ:NS';

สำหรับ (int const &ผม:ตัวเลข) {

ค่าใช้จ่าย <<ผม<< '';


}


ค่าใช้จ่าย <<endl;


กลับ 0;

}

เอาท์พุท:

ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันโค้ดด้านบน ผลลัพธ์แสดงว่าเวกเตอร์ประกอบด้วยองค์ประกอบที่หารด้วย 5 เท่านั้น และองค์ประกอบอื่นๆ ถูกลบออก

บทสรุป:

มีการใช้ฟังก์ชัน Erase() ที่แตกต่างกันในบทช่วยสอนนี้เพื่อลบองค์ประกอบเวกเตอร์ C++ มีฟังก์ชันอื่นๆ มากมายที่จะลบองค์ประกอบออกจากเวกเตอร์ และฟังก์ชันเหล่านั้นสามารถลบองค์ประกอบเดียวในแต่ละครั้งได้ แต่ทั้งองค์ประกอบเดียวและหลายองค์ประกอบจากตำแหน่งใดๆ ของเวกเตอร์สามารถลบออกได้โดยใช้ฟังก์ชัน vector Erase()