For loop Berbasis Rentang
Termasuk bagian Logika dan Alur dalam perjalanan C++ di Coddy. Pelajaran 15 dari 56.
Meskipun for loop tradisional dengan indeks berfungsi baik untuk melakukan iterasi melalui vector, C++ menawarkan solusi yang lebih elegan: range-based for loop. Sintaks modern ini menghilangkan kebutuhan untuk mengelola indeks secara manual dan membuat kodemu lebih rapi serta mudah dibaca.
for loop berbasis rentang menangani detail perulangan secara otomatis untukmu. Daripada mengelola variabel indeks, kamu cukup menentukan apa yang ingin kamu lakukan dengan setiap elemen:
std::vector<std::string> names = {"Alice", "Bob", "Charlie"};
for (const std::string& name : names) {
std::cout << name << std::endl;
}Perulangan ini melakukan hal yang sama persis seperti pendekatan tradisional berbasis indeks, tetapi dengan sintaks yang jauh lebih sederhana. Variabel name secara otomatis mengambil nilai setiap elemen dalam vector, satu per satu.
Kamu mungkin melihat simbol & dalam deklarasi perulangan: const std::string& name. Dalam konteks ini, & tidak berarti "alamat dari" seperti yang mungkin pernah kamu lihat sebelumnya. Di sini, simbol ini menyatakan bahwa name adalah sebuah referensi (alias) yang langsung mengacu pada setiap elemen dalam vector, alih-alih membuat salinannya. Anggap saja ini seperti memberi nama baru pada bagian data yang sama, mirip dengan menggunakan pointer ke elemen tersebut, tetapi tanpa perlu melakukan dereferensi di dalam badan perulangan.
Kata kunci const adalah langkah pengamanan: kata kunci ini mencegah kamu mengubah elemen secara tidak sengaja melalui alias di dalam isi perulangan. Alias itu sendiri tetap berpindah ke setiap elemen baru pada setiap iterasi. Yang tetap konstan adalah konten yang kamu akses melalui alias, bukan kemajuan perulangan.
for loop berbasis rentang tidak hanya lebih mudah dibaca, tetapi juga lebih aman. Tidak ada risiko error indeks karena kamu tidak mengelola indeks secara manual. Fitur ini berfungsi dengan container apa pun yang mendukung iterasi, sehingga menjadi alat serbaguna untuk memproses kumpulan data di C++.
Tantangan
MudahBuat program yang menunjukkan range-based for loop dengan memproses kumpulan nama kota dan menampilkannya beserta jumlah karakternya.
Input berikut akan diberikan:
- Bilangan bulat
nyang menunjukkan jumlah kota - Lalu
nstring yang menunjukkan nama kota
Programmu harus:
- Membuat
std::vector<std::string>bernamacities - Menggunakan
push_back()untuk menambahkan setiap nama darinkota ke vector - Menggunakan range-based for loop untuk melakukan iterasi pada vector
- Untuk setiap kota dalam loop, mencetak nama kota diikuti panjangnya menggunakan method
.length() - Setelah loop, mencetak jumlah total kota yang diproses menggunakan method
.size()milik vector
Gunakan format output persis berikut:
City: [city name] (Length: [number of characters])\nCity: [city name] (Length: [number of characters])\n...\nTotal cities processed: [total count]Range-based for loop harus menggunakan sintaks for (const std::string& city : cities) untuk melakukan iterasi pada setiap elemen dalam vector. Gunakan city.length() untuk mendapatkan jumlah karakter dalam setiap nama kota.
Coba sendiri
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main() {
// Baca jumlah kota
int n;
cin >> n;
// Buat vector untuk menyimpan nama kota
vector<string> cities;
// Baca nama kota dan tambahkan ke vector
for (int i = 0; i < n; i++) {
string city;
cin >> city;
cities.push_back(city);
}
// TODO: Tulis kodemu di bawah ini
// Gunakan range-based for loop untuk menelusuri vector cities
// Cetak setiap nama kota beserta panjang namanya dengan format yang ditentukan
// Setelah perulangan, cetak jumlah kota yang diproses
return 0;
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Pointer dan Memori
Apa Itu Pointer?Operator Address-OfOperator DereferencePointer NullPointer dan ArrayMemori Dinamis dengan 'new'Membebaskan Memori dengan 'delete'Rangkuman: Latihan Pointer2Vektor (array Dinamis)
Memperkenalkan std::vectorMembuat VektorMenambahkan ElemenMengakses ElemenUkuran VektorIterasi dengan for loopFor loop Berbasis RentangMenghapus ElemenRangkuman: Operasi VektorLatihan sendiri: Compiler C++ online