Menu
Coddy logo textTech

Özet - Dinamik Dizi Yöneticisi

Coddy'nin C++ Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 17 / 104.

challenge icon

Görev

Kolay

Kendi belleğini yöneten ve gerektiğinde otomatik olarak büyüyen, tıpkı DynamicArray'ın arka planda çalıştığı gibi bir std::vector sınıfı oluşturalım!

Kodunuzu düzenlemek için iki dosya oluşturacaksınız:

  • DynamicArray.h: Dinamik boyutlu bir tamsayı dizisini yöneten bir DynamicArray sınıfı tanımlayın. Sınıfınız şunlara sahip olmalıdır:
    • Özel üyeler: veri dizisine bir işaretçi, geçerli boyut (eleman sayısı) ve kapasite (ayrılmış alan)
    • Başlangıç kapasitesini alan, diziyi heap üzerinde ayıran ve boyutu 0 olarak başlatan bir kurucu
    • Ayrılmış belleği serbest bırakan ve "DynamicArray destroyed" yazdıran bir yıkıcı
    • Diziye bir eleman ekleyen bir push(int value) yöntemi. Dizi doluysa yeni ve daha büyük bir dizi ayırarak, mevcut elemanları kopyalayarak ve eski diziyi serbest bırakarak kapasiteyi iki katına çıkarmalıdır
    • Verilen dizin konumundaki elemanı döndüren bir get(size_t index) yöntemi
    • Geçerli eleman sayısını döndüren bir getSize() yöntemi
    • Geçerli kapasiteyi döndüren bir getCapacity() yöntemi
  • main.cpp: Bir başlangıç kapasitesi ve eklenecek değerlerin sayısını okuyun. Ardından bu kadar tamsayı değeri okuyun ve her birini DynamicArray'nize ekleyin. Tüm değerleri ekledikten sonra şunları yazdırın:
    • "Size: <size>"
    • "Capacity: <capacity>"
    • "Elements: <e1> <e2> ..." (tüm elemanlar boşluklarla ayrılmış olarak)

Girdi biçimi şöyle olacaktır:

  • İlk satır: başlangıç kapasitesi (tamsayı)
  • İkinci satır: eklenecek değerlerin sayısı (tamsayı)
  • Sonraki satırlar: her satırda bir tamsayı değeri

Yeniden boyutlandırma sırasında diziniz kapasitesini iki katına çıkarmalıdır. Örneğin, kapasite 2 ile başlayıp üçüncü bir eleman eklerseniz kapasite 4 olmalıdır. Bu, RAII ilkesini gösterir. Sınıfınız belleği kurucuda edinir ve yıkıcıda serbest bırakarak bellek sızıntısı olmamasını sağlar.

Header dosyanızı #include "DynamicArray.h" kullanarak main.cpp dosyasına ekleyin.

Kendin dene

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

using namespace std;

int main() {
    // Başlangıç kapasitesini oku
    int initialCapacity;
    cin >> initialCapacity;

    // Eklenecek değer sayısını oku
    int numValues;
    cin >> numValues;

    // TODO: Create a DynamicArray with the initial capacity

    // TODO: numValues tamsayıyı oku ve her birini diziye push et

    // TODO: "Size: <size>" yazdır

    // TODO: "Capacity: <capacity>" yazdır

    // TODO: "Elements: <e1> <e2> ..." yazdır (tüm elemanlar boşluklarla ayrılmış)

    return 0;
}

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Online C++ derleyicisi