std::tuple
- C++ kursu
- İleri seviye
- Ders 11/83
- 5 dk
std::tuple ile heterojen koleksiyon öğrenirsin.
std::tuple
std::tuple, farklı türden N öğeyi tek bir kapsayıcıda tutan şablondur. Sözdizimi: std::tuple<int, double, std::string> t{42, 3.14, "merhaba"};. Her öğe farklı türde olabilir; bu, std::pair'in genelleştirilmiş halidir.
Öğelere std::get<index>(t) ile erişilir. İndis derleme zamanında bilinmeli; çalışma zamanında değişmez. std::tuple_size ve std::tuple_element ile boyut ve tür bilgisi alınır. Tuple, fonksiyonların birden fazla değer döndürmesi için yaygındır.
std::get ile erişim
std::get, tuple'ın bir öğesine derleme zamanı indisiyle erişir. std::get<0>(t) ilk öğeyi, std::get<1>(t) ikincisini verir. Tür de verilebilir: std::get<int>(t) tuple'daki int öğesini döndürür.
İndis sıradısı olursa derleme hatası alınır. Aynı türden birden fazla öğe varsa türle erişim belirsiz olur; bu durumda indis kullanılır. Tuple, structured bindings ile de açılabilir: auto [a, b] = t; ifadesi her öğeyi ayrı değişkene bağlar.
Uygulama Tuple oluştur ve yazdır
std::tuple<int, double, std::string> t{42, 3.14, "merhaba"}; oluştur. std::get<0>(t) ile ilk öğeyi al ve std::cout ile yazdır. <tuple> başlığını eklemeyi unutma.
Başlangıç kodu
#include <iostream>
#include <tuple>
#include <string>
int main() {
// Tuple oluştur ve ilk öğeyi yazdır
return 0;
}Örnek çözüm
#include <iostream>
#include <tuple>
#include <string>
int main() {
std::tuple<int, double, std::string> t{42, 3.14, "merhaba"};
std::cout << std::get<0>(t);
return 0;
}Beklenen çıktı
42
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 std::get satırını tamamla
std::tuple<int, double> t{42, 3.14};
auto x = ____;
std::tuple<int, double> t{42, 3.14};
auto x = std::get<0>(t);
Açıklama: std::get<0>(t) ilk öğeyi verir.
2 std::tuple ne saklar?
- Yalnızca iki öğeyi
- Aynı türden N öğeyi
- Farklı türden N öğeyi Doğru cevap
- Yalnızca işaretçileri
Açıklama: std::tuple farklı türden N öğeyi tutar.
3 Aracı amacına eşle
| Kavram | Anlamı |
|---|---|
std::tuple<T1, T2> |
Heterojen kapsayıcı |
std::get<0>(t) |
İlk öğeyi oku |
std::tuple_size<t> |
Öğe sayısı |
auto [a, b] = t |
Structured bindings |