0Pricing
C++ Academy · Ders

requires ile Concepts Tanımlama

requires ifadelerini ve kısıtlamaları kullanarak özel concepts tanımlayın

requires ile Concepts Tanımlama, CoddyKit'te ücretsiz bir C++ Academy dersidir. Bu, 4 dersinin 2. 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.

concept Anahtar Sözcüğü

template <params> concept Name = expression; ile bir kavram bildirin. İfade, derleme zamanında değerlendirilen bir boole olmalıdır.

template <typename T>
concept Integer = std::is_integral_v<T>;

Tür Özelliklerini Birleştirme

Tür özelliklerini bir kavramda birleştirmek için mantıksal işleçleri kullanın.

template <typename T>
concept SignedInteger = std::is_integral_v<T> && std::is_signed_v<T>;

requires İfadesi

Daha açıklayıcı bir biçim: türün desteklemesi gereken işlemleri listeleyin.

template <typename T>
concept Addable = requires(T a, T b) {
    a + b;
};

Birleşik Gereksinimler

requires içinde sonuç türünü ve ek kısıtları belirtebilirsiniz.

template <typename T>
concept Number = requires(T a, T b) {
    { a + b } -> std::convertible_to<T>;
    { a * b } -> std::convertible_to<T>;
};

İç İçe Gereksinimler

Adlandırılmış kavramları kullanmak için bir requires ifadesinin içine requires ekleyin.

template <typename T>
concept Sortable = requires(T t) {
    { t.begin() };
    { t.end() };
    requires std::movable<typename T::value_type>;
};

Tür Gereksinimleri

Bir türün belirli iç içe türleri veya takma adları olmasını zorunlu kılabilirsiniz.

template <typename T>
concept HasValueType = requires {
    typename T::value_type;
};

Şablonlarda Kavramları Kullanma

Üç sözdizimi:

// 1. Replace typename
template <Integer T>
T increment(T x) { return x + 1; }

// 2. requires after template parameters
template <typename T>
    requires Integer<T>
T increment(T x) { return x + 1; }

// 3. requires after function signature
template <typename T>
T increment(T x) requires Integer<T> {
    return x + 1;
}

Kavramlar ve auto Parametreleri

Kısaltılmış işlev şablonları da kısıtlanabilir.

void process(Integer auto x) { std::cout << x; }

Birden Çok Kısıt

Kavramları && ve || ile birleştirin.

template <std::integral T, std::integral U>
    requires (sizeof(T) >= sizeof(U))
T promote(U value) { return static_cast<T>(value); }

Adlandırma Kuralları

Çoğu kod, kavramlar için CamelCase kullanır. Bazı kitaplıklar standart kitaplıkla uyumlu olarak küçük harf kullanır. Bir kural seçin ve buna bağlı kalın.

Sınıf Şablonlarında Kavramlar

Sınıf şablonlarını da aynı şekilde kısıtlayın.

template <std::integral T>
class Counter { T value_; /* ... */ };

Yeniden Kullanılabilir Kavramlar

Küçük kavramlardan oluşan bir kitaplık tanımlayın ve bunları birleştirin. Yeniden kullanılabilir kavramlar, şablonların kendi kendini açıklamasını ve kolayca sürdürülebilmesini sağlar.

Hızlı Kontrol

Bir requires ifadesinin içinde, a + b işleminin sonucunun T'ye dönüştürülebilir olduğunu hangi sözdizimi denetler?

Özet

Kavramları concept Name = expression ile tanımlayın. Birleşik, iç içe ve tür gereksinimleri içeren işlem tabanlı kısıtlar için requires ifadelerini kullanın. Kapsamlı kısıtları ifade etmek için kavramları && ve || ile birleştirin.

Sıkça Sorulan Sorular

“requires ile Concepts Tanımlama” dersi ücretsiz mi?

Evet — “requires ile Concepts Tanımlama” 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.

“requires ile Concepts Tanımlama” dersinde ne öğreneceğim?

requires ifadelerini ve kısıtlamaları kullanarak özel concepts tanımlayı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 2. dersidir.

“requires ile Concepts Tanımlama” 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. Concepts ve SFINAE Neden Karşılaştırılır
  2. requires ile Concepts Tanımlama
  3. Şablonlarda ve auto'da Concepts Kullanımı
  4. Yaygın Standart Concepts: Integral, Ranges
← C++ Academy Sayfasına Dön