Menu
CoddyTech

Rangkuman: Pengelola Array Dinamis

Termasuk bagian Pemrograman Berorientasi Object dalam perjalanan C++ di Coddy. Pelajaran 17 dari 104.

challenge icon

Tantangan

Mudah

Mari kita buat class DynamicArray yang mengelola memorinya sendiri dan bertambah secara otomatis saat diperlukan, seperti cara kerja std::vector di balik layar!

Kamu akan membuat dua file untuk menata kodemu:

  • DynamicArray.h: Definisikan class DynamicArray yang mengelola array integer dengan ukuran dinamis. Class-mu harus memiliki:
    • Anggota private: pointer ke array data, ukuran saat ini (jumlah elemen), dan kapasitas (ruang yang dialokasikan)
    • Constructor yang menerima kapasitas awal, mengalokasikan array di heap, dan menginisialisasi ukuran menjadi 0
    • Destructor yang membebaskan memori yang dialokasikan dan mencetak "DynamicArray destroyed"
    • Method push(int value) yang menambahkan elemen ke array. Jika array penuh, kapasitasnya harus digandakan dengan mengalokasikan array baru yang lebih besar, menyalin elemen yang ada, lalu membebaskan array lama
    • Method get(size_t index) yang mengembalikan elemen pada indeks yang diberikan
    • Method getSize() yang mengembalikan jumlah elemen saat ini
    • Method getCapacity() yang mengembalikan kapasitas saat ini
  • main.cpp: Baca kapasitas awal dan jumlah nilai yang akan ditambahkan. Kemudian baca sejumlah nilai integer tersebut dan masukkan masing-masing ke dalam DynamicArray-mu dengan push. Setelah semua nilai ditambahkan, cetak:
    • "Size: <size>"
    • "Capacity: <capacity>"
    • "Elements: <e1> <e2> ..." (semua elemen dipisahkan oleh spasi)

Format inputnya adalah:

  • Baris pertama: kapasitas awal (integer)
  • Baris kedua: jumlah nilai yang akan ditambahkan (integer)
  • Baris berikutnya: satu nilai integer per baris

Saat mengubah ukuran, array-mu harus menggandakan kapasitasnya. Contohnya, jika kamu memulai dengan kapasitas 2 dan memasukkan elemen ketiga, kapasitasnya harus menjadi 4. Ini menunjukkan prinsip RAII. Class-mu memperoleh memori di constructor dan melepaskannya di destructor, sehingga tidak terjadi kebocoran memori.

Sertakan file header-mu di main.cpp menggunakan #include "DynamicArray.h".

Coba sendiri

#include <iostream>
#include "DynamicArray.h"

using namespace std;

int main() {
    // Baca kapasitas awal
    int initialCapacity;
    cin >> initialCapacity;

    // Baca jumlah nilai yang akan ditambahkan
    int numValues;
    cin >> numValues;

    // TODO: Buat DynamicArray dengan kapasitas awal

    // TODO: Baca numValues bilangan bulat dan push masing-masing ke array

    // TODO: Cetak "Size: <size>"

    // TODO: Cetak "Capacity: <capacity>"

    // TODO: Cetak "Elements: <e1> <e2> ..." (pisahkan semua elemen dengan spasi)

    return 0;
}

Semua pelajaran di Pemrograman Berorientasi Object

Latihan sendiri: Compiler C++ online