C++ Academy · Pelajaran

Gelung for Berasaskan Julat dengan Bekas

Lakukan lelaran dengan kemas pada bekas menggunakan sintaks for berasaskan julat C++11.

Pelajaran 3 daripada 413 langkah

Gelung for Berasaskan Julat dengan Bekas ialah pelajaran C++ Academy percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran C++ Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus C++ Academy merangkumi sejumlah 4 pelajaran.

Gelung Moden

C++11 memperkenalkan gelung for berasaskan julat — lakukan lelaran pada mana-mana bekas tanpa indeks atau lelaran yang dinyatakan secara jelas. Kodnya lebih kemas dan lebih sukar untuk tersilap.

std::vector<int> v = {1, 2, 3, 4, 5};
for (int x : v) {
    std::cout << x << " ";
}

Mengikut Nilai

Contoh di atas menyalin setiap elemen ke dalam x. Tiada masalah untuk jenis yang murah seperti int; tetapi mahal untuk objek besar.

Mengikut Rujukan const

Untuk jenis yang tidak remeh, gunakan const auto& bagi mengelakkan penyalinan dan menunjukkan bahawa Anda tidak akan mengubah suai elemen.

std::vector<std::string> names = {"Ada", "Bob"};
for (const auto& name : names) {
    std::cout << name << "\n";
}

Mengikut Rujukan untuk Pengubahsuaian

Gunakan rujukan biasa untuk mengubah suai elemen di tempatnya.

std::vector<int> v = {1, 2, 3};
for (auto& x : v) {
    x *= 10;
}
// v is now {10, 20, 30}

auto untuk Deduksi Jenis

Biarkan pengkompil membuat deduksi jenis elemen. Dengan rentetan, vektor struktur dan peta, cara ini menjimatkan banyak penulisan.

Melakukan Lelaran pada Peta

Setiap elemen ialah std::pair<const Key, Value>. Gunakan pengikatan berstruktur (C++17) untuk kod yang lebih kemas.

std::map<std::string, int> ages = {{"Ada",30},{"Bob",24}};
for (const auto& [name, age] : ages) {
    std::cout << name << ": " << age << "\n";
}

Melakukan Lelaran pada Rentetan

std::string ialah bekas char.

std::string s = "hello";
for (char c : s) {
    std::cout << c << " ";
}

Gelung Senarai Pemula

Anda boleh melakukan lelaran berasaskan julat secara terus pada senarai yang diapit pendakap.

for (int n : {1, 2, 4, 8, 16}) {
    std::cout << n << " ";
}

Gelung Berasaskan Julat Songsang

range-for standard bergerak ke hadapan. Untuk lelaran songsang, gunakan std::ranges::reverse_view (C++20) atau lelaran songsang secara manual.

#include <ranges>
for (auto x : v | std::views::reverse) {
    std::cout << x;
}

Had

Gelung berasaskan julat tidak boleh:

  • Mengetahui indeks semasa tanpa pembilang berasingan
  • Melangkau elemen atau mengubah suai bekas semasa melakukan lelaran
  • Melakukan lelaran pada dua bekas secara selari (gunakan for biasa atau zip)

Jenis Tersuai dalam Range-For

Untuk membolehkan kelas Anda sendiri berfungsi dengan range-for, sediakan ahli begin() dan end() atau fungsi bebas yang mengembalikan lelaran.

Semakan Pantas

Bentuk gelung for berasaskan julat yang manakah mengubah suai elemen dalam bekas?

Ringkasan

Gelung for berasaskan julat ialah cara paling kemas untuk melakukan lelaran. Gunakan const auto& secara lalai, auto& untuk mengubah suai, dan pengikatan berstruktur untuk menguraikan pasangan serta tuple.

Percuma untuk bermula

Pelajari C++ dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
51
Pelajaran
203

Soalan Lazim

Adakah pelajaran “Gelung for Berasaskan Julat dengan Bekas” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran C++ Academy, termasuk “Gelung for Berasaskan Julat dengan Bekas”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus C++ Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Gelung for Berasaskan Julat dengan Bekas”?

Lakukan lelaran dengan kemas pada bekas menggunakan sintaks for berasaskan julat C++11. Anda berlatih C++ Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan C++ Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran C++ Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.

Berapa lamakah pelajaran “Gelung for Berasaskan Julat dengan Bekas” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran C++ Academy ini?

Ya. Setiap pelajaran C++ Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Percabangan: if-else, ternary, switch-case
  2. Corak Gelung: for, while, do-while
  3. Gelung for Berasaskan Julat dengan Bekas
  4. Pemulangan Awal, break, continue dan goto
← Kembali ke C++ Academy