conditional
- C++ kursu
- İleri seviye
- Ders 16/83
- 5 dk
conditional ile derleme zamanı tür seçimi öğrenirsin.
conditional
std::conditional<C, A, B>, derleme zamanında bir tür seçer. C doğruysa A, yanlışsa B seçilir. Sonuç ::type ile okunur; C++14'ten beri std::conditional_t<C, A, B> kısaltması da kullanılır.
Örnek: using T = std::conditional_t<sizeof(int) == 4, int, long>; sizeof(int) == 4 ise T = int, değilse T = long olur. Bu, platforma göre farklı türler seçmek için kullanışlıdır; çalışma zamanında dal yoktur.
Tür diğer adı (alias) ile kullanım
conditional_t çoğu zaman bir using diğer adıyla kullanılır. Örnek: template <typename T> using SmallType = std::conditional_t<sizeof(T) <= 4, int, long>; Bu, T'nin boyutuna göre int veya long seçer. Sonra SmallType<char> yazılır.
Bu yöntem, kodu platformdan bağımsız kılar. 64-bit Linux'ta long 8 bayt; 32-bit Windows'ta 4 bayttır. conditional_t ile bayt boyutuna göre seçim yapılır; kullanıcı her platformda aynı davranışı görür.
Uygulama SmallType diğer adını yaz
template <typename T> using SmallType = std::conditional_t<sizeof(T) <= 4, int, long>; yaz. main içinde SmallType<char> x = 10; yaz ve std::cout << sizeof(x); ile boyutunu yazdır.
Başlangıç kodu
#include <iostream>
#include <type_traits>
// SmallType diğer adını yaz
int main() {
// SmallType<char> değişkeni tanımla ve boyutunu yazdır
return 0;
}Örnek çözüm
#include <iostream>
#include <type_traits>
template <typename T>
using SmallType = std::conditional_t<sizeof(T) <= 4, int, long>;
int main() {
SmallType<char> x = 10;
std::cout << sizeof(x);
return 0;
}Beklenen çıktı
4
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 İfadeyi rolüne eşle
| Kavram | Anlamı |
|---|---|
std::conditional_t<C, A, B> |
Tür seçme kısaltması |
std::conditional<C, A, B> |
Tür seçme şablonu |
::type |
Klasik erişim |
C |
Derleme zamanı koşulu |
2 conditional satırını tamamla
template <typename T>
using SmallType = std::____<sizeof(T) <= 4, int, long>;
template <typename T>
using SmallType = std::conditional_t<sizeof(T) <= 4, int, long>;
Açıklama: conditional_t<C, A, B> derleme zamanı tür seçer.
3 conditional_t<true, A, B> neyi seçer?
- B
- Ne A ne B
- Derleme hatası
- A Doğru cevap
Açıklama: Koşul true olduğunda ilk tür (A) seçilir.