Structured bindings
- C++ kursu
- İleri seviye
- Ders 2/83
- 5 dk
Structured bindings ile çoklu değişken atamayı öğrenirsin.
Structured bindings
Structured bindings (C++17), bir struct, pair veya tuple'ın üyelerini tek satırda ayrı değişkenlere bağlar. Sözdizimi: auto [a, b] = çift;. Burada a ve b, çift.first ve çift.second için yerel adlar olur.
Bu, p.first ve p.second yazmakten daha okunaklıdır. Bir fonksiyon birden fazla değer döndürmek için std::pair veya std::tuple kullanıyorsa, çağıran taraf bağlayıcı ile sonucu kolayca açar.
std::pair ile çoklu dönüş
Bir fonksiyon iki değer döndürmek istiyorsa std::pair<T1, T2> kullanır. Çağıran taraf auto [a, b] = func(); ile sonucu açar. Örnek: std::pair<bool, int> find(int x) bulunduğunu ve değeri döndürür.
Structured bindings, std::get<0> ve std::get<1> yazmaktan daha temizdir. Derleyici her üye için ayrı değişken üretir; çalışma zamanı maliyeti yoktur. Aynı sözdizimi std::array ve Plain struct'lar için de çalışır.
Uygulama min_max fonksiyonunu bağla
std::pair<int, int> min_max(int a, int b) fonksiyonunu yaz: küçük olanı first, büyük olanı second yapsın. main içinde sonucu auto [mn, mx] = min_max(7, 3); ile bağla ve mn değerini std::cout ile yazdır.
Başlangıç kodu
#include <iostream>
#include <utility>
// min_max fonksiyonunu yaz
int main() {
// Sonucu bağla ve yazdır
return 0;
}Örnek çözüm
#include <iostream>
#include <utility>
std::pair<int, int> min_max(int a, int b) {
return {std::min(a, b), std::max(a, b)};
}
int main() {
auto [mn, mx] = min_max(7, 3);
std::cout << mn;
return 0;
}Beklenen çıktı
3
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Bağlama sözdizimini tamamla
auto ____ = make_pair(3, 7);
auto [a, b] = make_pair(3, 7);
Açıklama: Köşeli parantez structured bindings için kullanılır.
2 Hangi satır geçerli bir structured binding?
- auto (a, b) = p;
- auto [a, b] = p; Doğru cevap
- auto {a, b} = p;
- auto <a, b> = p;
Açıklama: Köşeli parantez structured bindings için kullanılır.
3 Sözdizimini amacına eşle
| Kavram | Anlamı |
|---|---|
auto [a, b] = p |
Pair üyelerini bağla |
auto [a, b, c] = t |
Tuple üyelerini bağla |
auto& [a, b] = p |
Referans ile bağla |
auto [a, b]{a, b} |
Şablon değil |