Menu
Coddy logo textTech

Özet - Generic Konteyner

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

challenge icon

Görev

Kolay

Bu bölümde şablonlar hakkında öğrendiğiniz her şeyi bir araya getiren bir GenericContainer sınıf şablonu oluşturalım. Öğeleri dinamik olarak depolayabilen ve şablon teknikleri aracılığıyla kullanışlı işlemler sunan esnek, tür güvenli bir kapsayıcı oluşturacaksınız.

Kodunuzu iki dosya arasında düzenleyeceksiniz:

  • GenericContainer.h: Sınıf şablonunuzu burada tanımlayın. GenericContainer şunları yapmalıdır:

    Öğeleri, bir diziye işaretçi kullanarak dinamik olarak depolamalı; ayrıca geçerli boyutu ve kapasiteyi takip etmelidir.

    Şu temel yöntemleri sağlamalıdır:

    • Başlangıç kapasitesini alan bir kurucu
    • Dinamik belleği uygun şekilde temizleyen bir yıkıcı
    • push(T value): kapsayıcıya bir öğe ekler (bu görev için kapasitenin her zaman yeterli olduğunu varsayın)
    • get(size_t index): verilen dizindeki öğeyi döndürür
    • getSize(): geçerli öğe sayısını döndürür

    Bir printContainer alan ve tüm öğeleri boşluklarla ayırarak, ardından bir satır sonu yazdıran GenericContainer<T>& adlı bir işlev şablonu ekleyin.

    printContainer için, GenericContainer<bool> veya true yerine false ya da 1 yazdıran bir 0 şablon özelleştirmesi oluşturun.

    Bir pushAll ve istenen sayıda değer alan, her birini bir fold ifadesi kullanarak kapsayıcıya ekleyen GenericContainer<T>& adlı değişken bağımsız değişkenli bir işlev şablonu ekleyin.

  • main.cpp: Beş girdi okuyun (her biri ayrı bir satırda):
    1. Birinci tam sayı
    2. İkinci tam sayı
    3. Üçüncü tam sayı
    4. Bir double değeri
    5. Dize olarak bir boolean (true veya false)

    Kapsayıcınızı şunları yaparak gösterin:

    1. Kapasitesi 10 olan bir GenericContainer<int> oluşturma
    2. Üç tam sayının tümünü aynı anda eklemek için pushAll kullanma
    3. Boyutu yazdırma: Int container size: <size>
    4. Tam sayıları görüntülemek için printContainer çağırma
    5. Kapasitesi 5 olan bir GenericContainer<double> oluşturma
    6. Double değerini ve 2.5 değişmezini ayrı push çağrıları kullanarak ekleme
    7. Double değerlerini görüntülemek için printContainer çağırma
    8. Kapasitesi 5 olan bir GenericContainer<bool> oluşturma
    9. Boolean girdisini ve false değişmezini ekleme
    10. Boolean değerlerini görüntülemek için printContainer çağırma (true/false göstermelidir)

Örneğin, girdiler 10, 20, 30, 3.14 ve true olduğunda:

Int container size: 3
10 20 30 
3.14 2.5 
true false 

Bu görev, kapsayıcı için sınıf şablonlarını, özel bool yazdırma işlemi için şablon özelleştirmesini ve esnek pushAll işlevi için değişken bağımsız değişkenli şablonları bir araya getirir. Kapsayıcınız, RAII ilkelerini izleyerek kendi belleğini yönetir ve şablonların uygun kaynak yönetimiyle nasıl bütünleştiğini gösterir.

Kendin dene

#include <iostream>
#include <string>
#include "GenericContainer.h"

using namespace std;

int main() {
    // Girdileri oku
    int num1, num2, num3;
    double doubleVal;
    string boolStr;
    
    cin >> num1;
    cin >> num2;
    cin >> num3;
    cin >> doubleVal;
    cin >> boolStr;
    
    // String'i bool'a dönüştür
    bool boolVal = (boolStr == "true");
    
    // TODO: Kapasitesi 10 olan GenericContainer<int> oluştur
    
    // TODO: Üç tamsayının hepsini bir kerede eklemek için pushAll kullan
    
    // TODO: Print the size: "Int container size: <size>"
    
    // TODO: Call printContainer to display the integers
    
    // TODO: Kapasitesi 5 olan GenericContainer<double> oluştur
    
    // TODO: double değerini ve 2.5'i bireysel push çağrıları kullanarak ekle
    
    // TODO: Call printContainer to display the doubles
    
    // TODO: Kapasitesi 5 olan GenericContainer<bool> oluştur
    
    // TODO: Boolean girdiyi ve false değerini ekle
    
    // TODO: Call printContainer to display the booleans
    
    return 0;
}

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

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