0Pricing
C++ Academy · Ders

Değişken Sayılı Şablonlar ve Parametre Paketleri

Değişken sayıda parametre alan şablonlar yazmak için parametre paketlerini ve katlama ifadelerini kullanın

Değişken Sayılı Şablonlar ve Parametre Paketleri, CoddyKit'te ücretsiz bir C++ Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C++ Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C++ Academy kursu toplamda 4 dersten oluşur.

Değişken Sayıda Şablon Bağımsız Değişkeni

Değişken bağımsız değişkenli şablonlar, herhangi bir sayıda şablon bağımsız değişkenini kabul eder. std::make_unique, std::tuple ve biçimlendirilmiş günlük kaydı gibi işlevler yazmak için kullanılır.

Parametre Paketi Sözdizimi

Bir tür parametresi paketi bildirmek için typename... Ts, paketi genişletmek için Ts... kullanın.

template <typename... Args>
void print_all(Args... args) {
    // ...
}

Paket Genişletme

Bir ifadenin ardından gelen ..., paketi virgülle ayrılmış bir listeye genişletir.

template <typename... Args>
void pass_through(Args... args) {
    other_func(args...);    // pass each arg
}

Özyinelemeli Değişken Bağımsız Değişkenli Şablonlar (Eski Stil)

C++17 öncesinde değişken bağımsız değişkenli işlevler genellikle özyinelemeli olarak yazılırdı: bir bağımsız değişken işlenir, ardından kalanlarla özyinelemeli çağrı yapılırdı.

// base case
void log() {}

// recursive case
template <typename T, typename... Rest>
void log(T first, Rest... rest) {
    std::cout << first;
    log(rest...);
}

Katlama İfadeleri (C++17)

C++17, özyinelemeden çok daha temiz olan katlama ifadelerini ekledi. Bir işleci paket boyunca uygulayın.

template <typename... Args>
auto sum(Args... args) {
    return (args + ...);    // fold +
}

std::cout << sum(1, 2, 3, 4);   // 10

Katlama İşleçleri

Dört katlama biçimi vardır:

  • (... op pack) — tekli genişletme üzerinde sola katlama
  • (pack op ...) — sağa katlama
  • (init op ... op pack) — başlangıç değeriyle sola katlama
  • (pack op ... op init) — başlangıç değeriyle sağa katlama

Tüm Bağımsız Değişkenleri Yazdırma

Virgül katlamayla kullanılan yaygın bir kalıptır.

template <typename... Args>
void print_all(Args... args) {
    ((std::cout << args << " "), ...);   // comma fold
}

print_all(1, "hi", 3.14);   // 1 hi 3.14

Bağımsız Değişkenleri Sayma

sizeof...(pack), derleme zamanında bir paketteki öğe sayısını döndürür.

template <typename... Args>
void info(Args... args) {
    std::cout << "count = " << sizeof...(args);
}

Değişken Bağımsız Değişkenli Sınıf Şablonları

Sınıf şablonlarında da parametre paketleri bulunabilir. Örnek: std::tuple<Ts...>.

template <typename... Ts>
class Tuple {
    // implementation uses recursion or storage tricks
};

Paketlerle Kusursuz İletim

Her türden bağımsız değişkeni bir kurucuya kusursuz biçimde iletmek için değişken bağımsız değişkenli şablonları std::forward ile birleştirin.

template <typename T, typename... Args>
std::unique_ptr<T> my_make_unique(Args&&... args) {
    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
}

Tür Paketini İşleme

Şablon özelleştirmesi veya katlama ifadeleriyle derleme zamanında liste işlemleri uygulayabilirsiniz: ilk, son ve baş/kuyruk ayrıştırması.

Tuzaklar

Yaygın sorunlar:

  • Paketi genişletmeyi unutmak (args ile args... arasındaki fark)
  • Katlama ifadelerinde değerlendirme sırası (birleşmeli olmayan işleçlerde sol ve sağ yön önemlidir)
  • Derin özyineleme nedeniyle derleme süresinin artması

Kısa Kontrol

Bir parametre paketinin tüm öğelerini toplamayı hangi C++17 özelliği kolaylaştırır?

Özet

Değişken bağımsız değişkenli şablonlar, parametre paketleri aracılığıyla değişken sayıda şablon bağımsız değişkenini işler. C++17 katlama ifadeleri, özyinelemeli değişken bağımsız değişkenli kodun yerini kısa ifadelere bırakır. Kusursuz iletimle birleştirildiğinde fabrika işlevlerine ve genel yönlendirmeye güç verir.

Sıkça Sorulan Sorular

“Değişken Sayılı Şablonlar ve Parametre Paketleri” dersi ücretsiz mi?

Evet — “Değişken Sayılı Şablonlar ve Parametre Paketleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C++ Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C++ Academy kursu toplamda 4 dersten oluşur.

“Değişken Sayılı Şablonlar ve Parametre Paketleri” dersinde ne öğreneceğim?

Değişken sayıda parametre alan şablonlar yazmak için parametre paketlerini ve katlama ifadelerini kullanın C++ Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

C++ Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te C++ Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“Değişken Sayılı Şablonlar ve Parametre Paketleri” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu C++ Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her C++ Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. İşlev ve Sınıf Şablonlarına Yeniden Bakış
  2. Şablon Özelleştirme: Kısmi ve Tam
  3. Değişken Sayılı Şablonlar ve Parametre Paketleri
  4. constexpr İşlevleri ve if constexpr
← C++ Academy Sayfasına Dön