CodeBlanks Logo Icon CodeBlanks

Özet - Modern C++

structured bindings, concepts ve ranges'i birleştirerek bir veri işleme hattı yazarsın.

Özet - Modern C++

Bu grupta C++17 ve C++20'nin beş önemli aracını gördün: std::optional ile güvenli dönüş, structured bindings ile çoklu değer açma, if constexpr ile derleme zamanı dallar, concepts ile şablon kısıtları ve ranges ile composable görünümler.

Bu araçlar birlikte daha güvenli, daha okunaklı ve daha hızlı kod yazmanı sağlar. Şimdi öğrendiklerini bir araya getirerek küçük bir görev yazacaksın.

Uygulama twice + binding ile özet

template <typename T> auto twice(T x) yaz; gövdede if constexpr ile std::is_integral_v<T> doğruysa x * 2, değilse x döndür. main içinde auto [mn, mx] = std::pair{twice(5), twice(7)}; ile sonuçları bağla ve mn + mx toplamını std::cout ile yazdır.

Başlangıç kodu

main.cpp
#include <iostream>
#include <type_traits>
#include <utility>

// twice şablonunu yaz

int main() {
    // Bağla ve toplamı yazdır
    return 0;
}

Örnek çözüm

main.cpp
#include <iostream>
#include <type_traits>
#include <utility>

template <typename T>
auto twice(T x) {
    if constexpr (std::is_integral_v<T>) return x * 2;
    return x;
}

int main() {
    auto [mn, mx] = std::pair{twice(5), twice(7)};
    std::cout << mn + mx;
    return 0;
}

Beklenen çıktı

24

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Hangi araç şablon parametrelerini kısıtlar?

  • std::optional
  • concepts Doğru cevap
  • ranges
  • structured bindings

Açıklama: concepts, requires yan tümcesiyle şablon kısıtları verir.

2 Aracı amacına eşle

Kavram Anlamı
std::optional Güvenli dönüş
structured bindings Çoklu açma
if constexpr Derleme zamanı dal
ranges Composable görünüm

3 if constexpr satırını tamamla

Soru
template <typename T>
auto twice(T x) {
    ____ (std::is_integral_v<T>) return x * 2;
    return x;
}
Cevap
template <typename T>
auto twice(T x) {
    if constexpr (std::is_integral_v<T>) return x * 2;
    return x;
}

Açıklama: if constexpr derleme zamanı daldır.

İleri seviye bölümündeki tüm dersler