อาร์เรย์ใช้เพื่อจัดเก็บข้อมูลหลายรายการ และไม่สามารถเปลี่ยนแปลงจำนวนองค์ประกอบของอาร์เรย์ได้ในขณะทำงาน ปัญหานี้สามารถแก้ไขได้โดยใช้เวกเตอร์ที่ทำงานเหมือนไดนามิกอาร์เรย์ มีฟังก์ชันที่แตกต่างกันในคลาสเวกเตอร์เพื่อเพิ่มและลบองค์ประกอบออกจากเวกเตอร์ ฟังก์ชัน 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()