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.
Tantangan
MudahBuat 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
nyang mewakili jumlah elemen yang akan ditambahkan ke vector pada awalnya - Kemudian,
nbilangan bulat yang akan dimasukkan ke dalam vector - Bilangan bulat
myang mewakili jumlah elemen yang akan dihapus - Kemudian,
mbilangan bulat yang mewakili elemen yang akan dihapus dari vector
Programmu harus:
- Membuat
std::vector<int>kosong - Membaca jumlah elemen yang akan ditambahkan dan memasukkannya ke dalam vector menggunakan
.push_back() - Mencetak ukuran awal vector setelah semua elemen dimasukkan
- Membaca jumlah elemen yang akan dihapus
- Untuk setiap elemen yang akan dihapus, menggunakan
std::find()untuk menemukannya, lalu menggunakan.erase()untuk menghapusnya jika ditemukan - Setelah setiap percobaan penghapusan, mencetak ukuran vector saat ini
- 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;
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Pointer dan Memori
Apa Itu Pointer?Operator Address-OfOperator DereferencePointer NullPointer dan ArrayMemori Dinamis dengan 'new'Membebaskan Memori dengan 'delete'Rangkuman: Latihan Pointer2Vektor (array Dinamis)
Memperkenalkan std::vectorMembuat VektorMenambahkan ElemenMengakses ElemenUkuran VektorIterasi dengan for loopFor loop Berbasis RentangMenghapus ElemenRangkuman: Operasi VektorLatihan sendiri: Compiler C++ online