อาร์เรย์ใช้เพื่อจัดเก็บข้อมูลหลายรายการ และจำนวนองค์ประกอบของอาร์เรย์ไม่สามารถเปลี่ยนแปลงได้ในขณะใช้งาน ปัญหานี้สามารถแก้ไขได้โดยใช้เวกเตอร์ที่ทำงานเหมือนกับอาร์เรย์แบบไดนามิก ฟังก์ชันที่แตกต่างกันมีอยู่ในคลาสเวกเตอร์เพื่อเพิ่มและลบองค์ประกอบออกจากเวกเตอร์ ฟังก์ชันลบ () ใช้เพื่อลบองค์ประกอบตั้งแต่หนึ่งรายการขึ้นไปออกจากเวกเตอร์ในขณะรันไทม์ซึ่งจะลดขนาดของเวกเตอร์ มีการอธิบายการใช้ฟังก์ชันนี้ไว้ในบทช่วยสอนนี้
ไวยากรณ์:
ไวยากรณ์สองประเภทของฟังก์ชันนี้ระบุไว้ด้านล่าง
ตัววนซ้ำลบ ( ตำแหน่งตัววนซ้ำ ) ;
ฟังก์ชันลบ () ด้านบนใช้เพื่อลบองค์ประกอบเดียวออกจากเวกเตอร์ และส่งคืนตัววนซ้ำ และชี้ไปยังองค์ประกอบที่ตามด้วยองค์ประกอบที่ถูกลบล่าสุด
ตัววนซ้ำลบ ( ตัววนซ้ำ beginning_position ตัววนซ้ำ ending_position ) ;
ฟังก์ชันลบ () ด้านบนใช้เพื่อลบองค์ประกอบหลายรายการออกจากเวกเตอร์ตามตำแหน่งที่กล่าวถึงในอาร์กิวเมนต์ที่หนึ่งและที่สองของฟังก์ชันนี้
ข้อกำหนดเบื้องต้น:
ก่อนที่จะตรวจสอบตัวอย่างของบทช่วยสอนนี้ คุณต้องตรวจสอบว่ามีการติดตั้งคอมไพเลอร์ g++ อยู่ในระบบหรือไม่ หากคุณใช้ Visual Studio Code ให้ติดตั้งส่วนขยายที่จำเป็นเพื่อคอมไพล์ซอร์สโค้ด C++ เพื่อสร้างโค้ดที่ปฏิบัติการได้ ที่นี่ มีการใช้แอปพลิเคชัน Visual Studio Code เพื่อคอมไพล์และรันโค้ด C++ การใช้งานฟังก์ชัน Erase() แบบต่างๆ เพื่อแทรกองค์ประกอบลงในเวกเตอร์ได้แสดงไว้ด้านล่าง
ตัวอย่างที่ 1: ลบองค์ประกอบองค์ประกอบแรก
สร้างไฟล์ C++ ด้วยโค้ดต่อไปนี้เพื่อลบองค์ประกอบออกจากจุดเริ่มต้นของเวกเตอร์ มีการใช้เวกเตอร์ของค่าสตริงในโค้ด ค่าของเวกเตอร์ได้รับการพิมพ์ก่อนและหลังการลบองค์ประกอบแรกออกจากเวกเตอร์โดยใช้ฟังก์ชันลบ () พร้อมพารามิเตอร์ตัวเดียว
//รวมไลบรารีที่จำเป็น#รวม
#รวม <เวกเตอร์>
โดยใช้ เนมสเปซ มาตรฐาน ;
//แสดงค่าของเวกเตอร์
เป็นโมฆะ display_vector ( เวกเตอร์ < เชือก > ผลไม้ )
{
//เริ่มต้นตัวนับ
ภายใน เคาน์เตอร์ = 1 ;
//วนซ้ำและพิมพ์องค์ประกอบของเวกเตอร์โดยใช้การวนซ้ำ
สำหรับ ( อัตโนมัติ เขา = ผลไม้ เริ่ม ( ) ; เขา ! = ผลไม้ จบ ( ) ; เขา ++ )
{
//ตรวจสอบว่าองค์ประกอบเป็นองค์ประกอบสุดท้ายหรือไม่
ถ้า ( เคาน์เตอร์ ! = ผลไม้ ขนาด ( ) )
ศาล << * เขา << , ' ;
อื่น
ศาล << * เขา ;
//เพิ่มตัวนับขึ้น 1
เคาน์เตอร์ ++ ;
}
ศาล << สิ้นสุด ;
}
ภายใน หลัก ( เป็นโมฆะ ) {
//ประกาศเวกเตอร์ของข้อมูลสตริง
เวกเตอร์ < เชือก > ผลไม้ = { 'ส้ม' , 'กล้วย' , 'มะม่วง' , “แจ็คฟรุต” , ลิ้นจี่ } ;
//พิมพ์ค่าที่มีอยู่ของเวกเตอร์
ศาล << 'ค่าของเวกเตอร์ก่อนลบ: ' << สิ้นสุด ;
display_vector ( ผลไม้ ) ;
//ลบองค์ประกอบแรกออกจากเวกเตอร์
ผลไม้ ลบ ( ผลไม้ เริ่ม ( ) ) ;
//พิมพ์ค่าที่มีอยู่ของเวกเตอร์หลังจากลบออก
ศาล << ' \n ค่าของเวกเตอร์หลังลบ: ' << สิ้นสุด ;
display_vector ( ผลไม้ ) ;
กลับ 0 ;
}
เอาท์พุท:
ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันโค้ดด้านบน
ตัวอย่างที่ 2: ลบองค์ประกอบหลายรายการ
สร้างไฟล์ C++ ด้วยโค้ดต่อไปนี้เพื่อลบองค์ประกอบหลายรายการออกจากเวกเตอร์โดยใช้ฟังก์ชันลบ () มีการใช้เวกเตอร์ของค่าจำนวนเต็มในโค้ด มีการใช้ตัววนซ้ำสองตัวที่นี่เพื่อกำหนดช่วงขององค์ประกอบที่ถูกลบออกจากเวกเตอร์ ฟังก์ชันลบ () ใช้กับพารามิเตอร์สองตัวเพื่อลบองค์ประกอบหลายรายการออกจากเวกเตอร์
//รวมไลบรารีที่จำเป็น#รวม <เวกเตอร์>
#รวม
โดยใช้ เนมสเปซ มาตรฐาน ;
//แสดงเวกเตอร์
เป็นโมฆะ display_vector ( เวกเตอร์ < ภายใน > ตัวเลข )
{
//พิมพ์ค่าของเวกเตอร์โดยใช้การวนซ้ำ
สำหรับ ( อัตโนมัติ เขา = ตัวเลข เริ่ม ( ) ; เขา ! = ตัวเลข จบ ( ) ; เขา ++ )
ศาล << * เขา << ' ' ;
//เพิ่มบรรทัดใหม่
ศาล << ' \n ' ;
}
ภายใน หลัก ( ) {
//ประกาศเวกเตอร์ของข้อมูลจำนวนเต็ม
เวกเตอร์ < ภายใน > intArray { 678 , 435 , 960 , 231 , 800 , 387 , 634 , 267 , 409 , 294 } ;
//พิมพ์ค่าที่มีอยู่ของเวกเตอร์
ศาล << 'ค่าของเวกเตอร์ก่อนลบ: ' << สิ้นสุด ;
display_vector ( intArray ) ;
//ประกาศตัววนซ้ำสองตัวเพื่อลบช่วงขององค์ประกอบออกจากเวกเตอร์
เวกเตอร์ < ภายใน > :: ตัววนซ้ำ startEle, endEle ;
//ตั้งค่าตัววนซ้ำไปที่ตำแหน่งแรก
เริ่มต้นพวกเขา = intArray. เริ่ม ( ) ;
//เพิ่มตัววนซ้ำเริ่มต้นขึ้น 2
ก้าวหน้า ( เริ่มพวกเขา 2 ) ;
//ตั้งค่าตัววนซ้ำไปที่ตำแหน่งสุดท้าย
จบเอเล = intArray. จบ ( ) ;
//ลดตัววนซ้ำลง 3
ก้าวหน้า ( สิ้นสุดเอเล, - - 3 ) ;
//ลบช่วงขององค์ประกอบ
intArray. ลบ ( startEle, endEle ) ;
//พิมพ์ค่าที่มีอยู่ของเวกเตอร์หลังจากลบออก
ศาล << ' \n ค่าของเวกเตอร์หลังลบ: ' << สิ้นสุด ;
display_vector ( intArray ) ;
กลับ 0 ;
}
เอาท์พุท:
ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันโค้ดด้านบน ตามช่วงของตัววนซ้ำ องค์ประกอบจากตำแหน่งที่ 3 ถึงตำแหน่งที่ 7 ของเวกเตอร์จะถูกลบออก
ตัวอย่างที่ 3: ลบองค์ประกอบเฉพาะ
สร้างไฟล์ C++ ด้วยโค้ดต่อไปนี้เพื่อลบองค์ประกอบเฉพาะของเวกเตอร์โดยใช้ฟังก์ชันลบ () มีการประกาศเวกเตอร์ขององค์ประกอบจำนวนเต็ม 7 ตัวในโค้ด ต่อไป ลูป 'for' ใช้เพื่อวนซ้ำองค์ประกอบเวกเตอร์และลบองค์ประกอบเหล่านั้นออกจากเวกเตอร์ที่หารด้วย 5 ไม่ลงตัว
//รวมไลบรารีที่จำเป็น#รวม
#รวม <เวกเตอร์>
โดยใช้ เนมสเปซ มาตรฐาน ;
ภายใน หลัก ( )
{
//ประกาศเวกเตอร์ของข้อมูลจำนวนเต็ม
เวกเตอร์ < ภายใน > ตัวเลข = { 78 , สี่ห้า , 67 , 25 , 98 , 75 , 52 } ;
ศาล << “ค่าของเวกเตอร์ก่อนลบ: \n ' ;
สำหรับ ( ภายใน ค่าคงที่ & ฉัน : : ตัวเลข ) {
ศาล << ฉัน << '' ;
}
ศาล << สิ้นสุด ;
//ลบตัวเลขออกจากเวกเตอร์ที่หารด้วย 5 ไม่ลงตัว
สำหรับ ( อัตโนมัติ เขา = ตัวเลข เริ่ม ( ) ; เขา ! = ตัวเลข จบ ( ) ; เขา ++ )
{
//ตรวจสอบว่าตัวเลขหารด้วย 5 ลงตัวหรือไม่
ถ้า ( * เขา % 5 ! = 0 )
{
// ลบองค์ประกอบตามตัววนซ้ำ
ตัวเลข ลบ ( เขา -- ) ;
}
}
ศาล << “ค่าของเวกเตอร์หลังลบ: \n ' ;
สำหรับ ( ภายใน ค่าคงที่ & ฉัน : : ตัวเลข ) {
ศาล << ฉัน << '' ;
}
ศาล << สิ้นสุด ;
กลับ 0 ;
}
เอาท์พุท:
ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันโค้ดด้านบน ผลลัพธ์ที่ได้แสดงให้เห็นว่าเวกเตอร์มีองค์ประกอบที่หารด้วย 5 เท่านั้น และองค์ประกอบอื่นๆ ได้ถูกลบออกไปแล้ว
บทสรุป:
มีการแสดงการใช้งานฟังก์ชัน Erase() ที่แตกต่างกันในบทช่วยสอนนี้เพื่อลบองค์ประกอบเวกเตอร์ C++ มีฟังก์ชันอื่นๆ มากมายในการลบองค์ประกอบออกจากเวกเตอร์ และฟังก์ชันเหล่านั้นสามารถลบองค์ประกอบเดียวในแต่ละครั้งได้ แต่ทั้งองค์ประกอบเดี่ยวและหลายองค์ประกอบจากตำแหน่งใดๆ ของเวกเตอร์สามารถลบออกได้โดยใช้ฟังก์ชัน vector Erase()