Inilah jawaban lain yang tampaknya belum ada yang muncul. for
loop harus digunakan ketika Anda harus mengulangi urutan . Menggunakan !=
adalah metode yang paling ringkas menyatakan kondisi terminating untuk loop. Namun, menggunakan operator yang tidak terlalu membatasi adalah idiom pemrograman defensif yang sangat umum. Untuk bilangan bulat tidak masalah - itu hanya pilihan pribadi tanpa contoh yang lebih spesifik. Looping koleksi dengan iterator yang ingin Anda gunakan !=
untuk alasan yang telah dinyatakan orang lain. Jika Anda mempertimbangkan urutan float
atau double
, maka Anda ingin menghindari !=
di semua biaya.
Apa yang ingin saya tunjukkan adalah yang for
digunakan ketika Anda perlu mengulangi urutan. Urutan yang dihasilkan memiliki titik awal, interval, dan kondisi terminating. Ini secara ringkas ditentukan dalam for
pernyataan. Jika Anda menemukan diri Anda sendiri (1) tidak termasuk bagian langkah for
atau (2) menentukan sesuatu seperti true
kondisi penjaga, maka Anda tidak boleh menggunakan for
loop!
The while
loop digunakan untuk melanjutkan proses sementara kondisi tertentu terpenuhi. Jika Anda tidak memproses urutan, maka Anda mungkin ingin while
lingkaran sebagai gantinya. Argumen kondisi penjaga serupa di sini, tetapi keputusan antara a while
dan for
loop harus sangat sadar. The while
loop kurang dihargai di kalangan C ++ IMO.
Jika Anda sedang memproses koleksi item (penggunaan yang sangat umum for
-loop), maka Anda benar-benar harus menggunakan metode yang lebih khusus. Sayangnya, std::for_each
cukup menyakitkan di C ++ karena sejumlah alasan. Dalam banyak kasus memisahkan tubuh dari for
loop dalam fungsi yang berdiri bebas (sementara agak menyakitkan) menghasilkan solusi yang jauh lebih bersih. Ketika bekerja dengan koleksi, mempertimbangkan std::for_each
, std::transform
atau std::accumulate
. Implementasi banyak algoritma menjadi ringkas dan jernih ketika diekspresikan dengan cara ini. Belum lagi bahwa mengisolasi tubuh loop ke dalam fungsi / metode terpisah memaksa Anda untuk berkonsentrasi pada algoritma, persyaratan inputnya, dan hasil.
Jika Anda menggunakan Java, Python, Ruby, atau bahkan C ++ 0x , maka Anda harus menggunakan koleksi yang tepat foreach lingkaran. Ketika kompiler C ++ mengimplementasikan fitur ini, sejumlah for
loop akan hilang sebagaimana jenis diskusi ini.
int i = 10; while(i --> 0) { /* stuff */ }