Berbasis rentang untuk Pernyataan (C++)
statement
Mengeksekusi berulang kali dan berurutan untuk setiap elemen di expression
.
Sintaks
for (
ekspresi deklarasi:
untuk rentang)
statement
Keterangan
Gunakan pernyataan berbasis for
rentang untuk membuat perulangan yang harus dijalankan melalui rentang, yang didefinisikan sebagai apa pun yang dapat Anda ulang—misalnya, std::vector
, atau urutan Pustaka Standar C++ lainnya yang rentangnya didefinisikan oleh begin()
dan end()
. Nama yang dideklarasikan dalam for-range-declaration
bagian bersifat lokal untuk for
pernyataan dan tidak dapat dideklarasikan ulang di expression
atau statement
. Perhatikan bahwa auto
kata kunci lebih disukai dalam for-range-declaration
bagian pernyataan.
Baru di Visual Studio 2017: Perulangan berbasis for
rentang tidak lagi memerlukan dan begin()
end()
mengembalikan objek dengan jenis yang sama. Ini memungkinkan end()
untuk mengembalikan objek sentinel seperti yang digunakan oleh rentang seperti yang ditentukan dalam proposal Rentang-V3. Untuk informasi selengkapnya, lihat Menggeneralisasi Perulangan Berbasis For
Rentang dan pustaka rentang-v3 di GitHub.
Kode ini menunjukkan cara menggunakan perulangan berbasis for
rentang untuk melakukan iterasi melalui array dan vektor:
// range-based-for.cpp
// compile by using: cl /EHsc /nologo /W4
#include <iostream>
#include <vector>
using namespace std;
int main()
{
// Basic 10-element integer array.
int x[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
// Range-based for loop to iterate through the array.
for( int y : x ) { // Access by value using a copy declared as a specific type.
// Not preferred.
cout << y << " ";
}
cout << endl;
// The auto keyword causes type inference to be used. Preferred.
for( auto y : x ) { // Copy of 'x', almost always undesirable
cout << y << " ";
}
cout << endl;
for( auto &y : x ) { // Type inference by reference.
// Observes and/or modifies in-place. Preferred when modify is needed.
cout << y << " ";
}
cout << endl;
for( const auto &y : x ) { // Type inference by const reference.
// Observes in-place. Preferred when no modify is needed.
cout << y << " ";
}
cout << endl;
cout << "end of integer array test" << endl;
cout << endl;
// Create a vector object that contains 10 elements.
vector<double> v;
for (int i = 0; i < 10; ++i) {
v.push_back(i + 0.14159);
}
// Range-based for loop to iterate through the vector, observing in-place.
for( const auto &j : v ) {
cout << j << " ";
}
cout << endl;
cout << "end of vector test" << endl;
}
Berikut adalah outputnya:
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
end of integer array test
0.14159 1.14159 2.14159 3.14159 4.14159 5.14159 6.14159 7.14159 8.14159 9.14159
end of vector test
Perulangan berbasis for
rentang berakhir ketika salah satu di ini dijalankan statement
: break
, , return
atau goto
ke pernyataan berlabel di luar perulangan berbasis for
rentang. Pernyataan continue
dalam perulangan berbasis for
rentang hanya mengakhiri iterasi saat ini.
Perlu diingat fakta-fakta ini tentang berbasis for
rentang :
Secara otomatis mengenali array.
Mengenali kontainer yang memiliki
.begin()
dan.end()
.Menggunakan pencarian
begin()
tergantung argumen danend()
untuk hal lain.
Baca juga
auto
Pernyataan Perulangan
Kata kunci
while
Pernyataan (C++)
do-while
Pernyataan (C++)
for
Pernyataan (C++)
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk