Menu
CoddyTech

Menghapus Elemen

Termasuk bagian Logika dan Alur dalam perjalanan Rust di Coddy. Pelajaran 13 dari 66.

Terkadang kamu perlu menghapus elemen dari vector, bukan hanya menambahkannya. Rust menyediakan dua metode utama untuk menghapus elemen, masing-masing dirancang untuk situasi yang berbeda.

method .pop() menghapus dan mengembalikan elemen terakhir dari vector:

let mut numbers = vec![10, 20, 30, 40];
let last = numbers.pop(); // menghapus 40, mengembalikan Some(40)
// numbers sekarang berisi [10, 20, 30]

Perhatikan bahwa .pop() mengembalikan Option. Nilai yang dikembalikan adalah Some(value) jika ada elemen yang dihapus, atau None jika vector sudah kosong. Jadi, metode ini aman digunakan bahkan pada vector kosong.

Method .remove() menghapus elemen pada indeks tertentu dan mengembalikan elemen tersebut:

let mut fruits = vec!["apple", "banana", "cherry"];
let removed = fruits.remove(1); // menghapus "banana"
// fruits sekarang berisi ["apple", "cherry"]

Saat kamu menggunakan .remove(), semua elemen setelah indeks yang dihapus bergeser ke kiri untuk mengisi celah. Operasi ini bisa lebih lambat untuk vector besar jika elemen dihapus dari awal atau tengah, karena banyak elemen perlu dipindahkan.

Kedua metode memerlukan vector yang bisa diubah karena keduanya mengubah isinya. Pilih .pop() saat kamu ingin menghapus elemen dari bagian akhir, dan .remove() saat kamu perlu menghapus elemen dari posisi tertentu.

challenge icon

Tantangan

Mudah

Kamu akan menerima dua input: pertama, list angka yang dipisahkan koma, dan kedua, indeks yang akan dihapus. Kode awal sudah membaca kedua input dan mengubah angka-angka tersebut menjadi vector yang dapat diubah, numbers. Hapus elemen pada indeks yang ditentukan dan cetak elemen yang tersisa pada baris terpisah.

Persyaratan:

  • Ubah input kedua (index_input) menjadi bilangan bulat yang mewakili indeks
  • Gunakan .remove() untuk menghapus elemen pada indeks tersebut
  • Cetak setiap elemen yang tersisa pada baris terpisah

Input:

  • Baris pertama: Bilangan bulat yang dipisahkan koma (misalnya, 10,20,30,40,50)
  • Baris kedua: Bilangan bulat yang mewakili indeks yang akan dihapus

Output: Cetak setiap elemen vector yang tersisa pada baris terpisah

Coba sendiri

use std::io;

fn main() {
    // Baca angka-angka yang dipisahkan koma
    let mut numbers_input = String::new();
    io::stdin().read_line(&mut numbers_input).expect("Failed to read line");
    
    // Baca indeks elemen yang akan dihapus
    let mut index_input = String::new();
    io::stdin().read_line(&mut index_input).expect("Failed to read line");
    
    // Ubah "10,20,30" menjadi vektor: pisahkan pada setiap koma, konversi setiap bagian menjadi angka, lalu kumpulkan ke dalam Vec
    let mut numbers: Vec<i32> = numbers_input
        .trim()
        .split(',')
        .map(|s| s.trim().parse().unwrap())
        .collect();
    
    // TODO: Tulis kodemu di bawah ini
    // 1. Ubah index_input menjadi bilangan bulat
    // 2. Hapus elemen pada indeks yang ditentukan
    // 3. Cetak setiap elemen yang tersisa pada baris terpisah
    
}
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 Rust online