Menu
CoddyTech

Menghapus Elemen

Termasuk bagian Logika dan Alur dalam perjalanan C++ di Coddy. Pelajaran 16 dari 56.

Terkadang kamu perlu menghapus elemen dari vector saat tidak lagi dibutuhkan. Untuk menggunakan method .erase() pada vector, kamu perlu menggunakan iterator. Kamu dapat menggabungkan std::find() dengan .erase() untuk menghapus elemen berdasarkan nilainya.

Berikut cara menghapus sebuah elemen dari vector. std::find() berasal dari header <algorithm>, jadi sertakan header tersebut bersama <vector>:

#include <algorithm>
#include <vector>
std::vector<int> numbers = {10, 20, 30, 40};
auto it = std::find(numbers.begin(), numbers.end(), 20);
if (it != numbers.end()) {
    numbers.erase(it);  // Menghapus elemen pada posisi iterator
}

Setelah memanggil erase(), elemen pada posisi tersebut dihapus dan semua elemen setelahnya bergeser ke bawah. Jika kamu mencoba mencari dan menghapus elemen yang tidak ada, find() akan mengembalikan end(), dan memeriksa hal ini dapat mencegah error.

Pola ini membuat penghapusan elemen aman dan dapat diprediksi. Pola ini sangat berguna untuk mengelola koleksi dinamis saat kamu perlu menghapus item tertentu berdasarkan input pengguna atau logika program. Ingatlah untuk selalu memeriksa apakah iterator valid sebelum menghapus.

challenge icon

Tantangan

Mudah

Buat program yang menunjukkan cara menghapus elemen dari std::vector menggunakan method .erase() yang dipadukan dengan std::find(). Tantangan ini akan menguji pemahamanmu tentang cara menghapus elemen tertentu dengan aman dari vector dan mengamati hasilnya.

Input berikut akan diberikan:

  • Bilangan bulat n yang mewakili jumlah elemen yang akan ditambahkan ke vector pada awalnya
  • Kemudian, n bilangan bulat yang akan dimasukkan ke dalam vector
  • Bilangan bulat m yang mewakili jumlah elemen yang akan dihapus
  • Kemudian, m bilangan bulat yang mewakili elemen yang akan dihapus dari vector

Programmu harus:

  1. Membuat std::vector<int> kosong
  2. Membaca jumlah elemen yang akan ditambahkan dan memasukkannya ke dalam vector menggunakan .push_back()
  3. Mencetak ukuran awal vector setelah semua elemen dimasukkan
  4. Membaca jumlah elemen yang akan dihapus
  5. Untuk setiap elemen yang akan dihapus, menggunakan std::find() untuk menemukannya, lalu menggunakan .erase() untuk menghapusnya jika ditemukan
  6. Setelah setiap percobaan penghapusan, mencetak ukuran vector saat ini
  7. Terakhir, menelusuri elemen yang tersisa di dalam vector dan mencetaknya secara berurutan

Gunakan format output persis berikut:

Ukuran awal vector:

Initial size: [size]

Setelah setiap percobaan penghapusan:

After removing [number]: size = [current_size]

Elemen yang tersisa pada akhirnya:

Remaining elements: [element1] [element2] [element3] ...

Ingat, .erase() memerlukan iterator, jadi kamu harus menggunakan std::find() terlebih dahulu untuk menemukan elemennya. Selalu periksa apakah elemennya ditemukan sebelum menghapusnya. Gunakan perulangan for berbasis rentang untuk mencetak elemen yang tersisa sesuai urutannya saat ini.

Coba sendiri

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
    // Baca jumlah elemen yang akan ditambahkan
    int n;
    cin >> n;
    
    // Buat vector kosong
    vector<int> myVector;
    
    // Baca dan masukkan n elemen
    for (int i = 0; i < n; i++) {
        int element;
        cin >> element;
        // Masukkan elemen ke dalam vector
    }
    
    // Baca jumlah elemen yang akan dihapus
    int m;
    cin >> m;
    
    // TODO: Tulis kodemu di bawah ini
    // 1. Cetak ukuran awal vector
    // 2. Untuk setiap elemen yang akan dihapus, cari elemen tersebut, gunakan .erase(), lalu cetak ukuran setelah setiap penghapusan
    // 3. Cetak elemen yang tersisa dalam vector
    
    return 0;
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler C++ online