Structured Bindings dan if-init C++17
Uraikan tuple dan pasangan dengan structured bindings serta gunakan pernyataan if-init
Structured Bindings dan if-init C++17 adalah pelajaran C++ Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C++ Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C++ Academy mencakup 4 pelajaran total.
Destrukturisasi dalam C++ Modern
C++17 menambahkan pengikatan terstruktur—cara yang bersih untuk membongkar tuple, pasangan, larik, dan agregat menjadi variabel bernama yang terpisah.
Bentuk Dasar
Gunakan auto [a, b, ...] untuk mendeklarasikan variabel yang terikat pada bagian-bagian nilai di sisi kanan.
std::pair<std::string, int> p = {"Ada", 30};
auto [name, age] = p;
std::cout << name << " is " << age;Mengikat Iterasi Pemetaan
Perbaikan yang paling bersih terlihat pada iterasi pemetaan. Anda tidak lagi memerlukan it.first dan it.second.
std::map<std::string, int> ages = {{"Ada",30},{"Bob",24}};
for (const auto& [name, age] : ages) {
std::cout << name << " " << age << "\n";
}Pengikatan Referensi
Gunakan auto& untuk mengikat berdasarkan referensi. Mengubah nama yang terikat akan mengubah objek yang mendasarinya.
std::pair<int, int> p = {1, 2};
auto& [a, b] = p;
a = 99;
std::cout << p.first; // 99Pengikatan const
Gunakan const auto& untuk destrukturisasi hanya-baca tanpa menyalin.
for (const auto& [key, value] : map) {
// read only
}Mengikat Larik dan Tuple
Ini bekerja dengan tipe apa pun yang mendukung antarmuka mirip tuple—termasuk larik C dan std::tuple.
int arr[3] = {1, 2, 3};
auto [x, y, z] = arr;
std::tuple<int, std::string, double> t = {1, "hi", 3.14};
auto [a, s, d] = t;Mengikat Struktur Biasa
Anda dapat melakukan destrukturisasi pada struktur apa pun yang anggotanya bersifat publik. Nama-nama tersebut ditentukan berdasarkan urutan deklarasi.
struct Point { int x; int y; };
Point pt{3, 4};
auto [x, y] = pt;
std::cout << x << ", " << y;Pernyataan if-init
C++17 juga menambahkan pernyataan inisialisasi untuk if dan switch. Deklarasikan variabel sementara di dalam header—cakupannya adalah isi pernyataan tersebut.
if (auto it = map.find("Ada"); it != map.end()) {
std::cout << it->second;
} else {
std::cout << "not found";
}Menggabungkan Kedua Fitur
Pengikatan dan inisialisasi pada if dapat digunakan bersama untuk menghasilkan kode yang elegan.
if (auto [it, inserted] = m.insert({"key", 42}); inserted) {
std::cout << "added";
} else {
std::cout << "already present";
}Masa Hidup Pengikatan
Pengikatan mengacu pada subobjek dari variabel anonim yang mendasarinya. Pengikatan tersebut hidup hingga akhir cakupan yang memuatnya—masa hidupnya sama seperti variabel lokal biasa.
Kapan NOT Menggunakan Pengikatan
Jika nama anggota memiliki makna yang akan hilang saat menggunakan nama pengikatan, pilih akses anggota yang eksplisit. Keterbacaan lebih penting daripada keringkasan.
Pemeriksaan Singkat
Fitur C++17 apa yang memungkinkan Anda melakukan iterasi pada std::map dengan bagian-bagian bernama dari setiap pasangan?
Ringkasan
Pengikatan terstruktur memecah pasangan, tuple, larik, dan struktur menjadi variabel bernama. Jika digabungkan dengan pernyataan inisialisasi pada if C++17, fitur ini membuat kode iterasi dan pencarian menjadi jauh lebih bersih.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Structured Bindings dan if-init C++17” gratis?
Ya — teks lengkap “Structured Bindings dan if-init C++17” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C++ Academy, upgrade ke CoddyKit PRO. Kursus C++ Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Structured Bindings dan if-init C++17”?
Uraikan tuple dan pasangan dengan structured bindings serta gunakan pernyataan if-init Kamu berlatih C++ Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai C++ Academy?
Tidak diperlukan pengalaman sebelumnya. C++ Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Structured Bindings dan if-init C++17” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran C++ Academy ini?
Ya. Setiap pelajaran C++ Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- auto, decltype, dan Deduksi Tipe
- Range-based for, nullptr, dan enum class
- Ekspresi Lambda: Capture, Mutable, Generik
- Structured Bindings dan if-init C++17