Inilah jawaban lain yang tampaknya belum ada yang muncul. forloop 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 floatatau double, maka Anda ingin menghindari !=di semua biaya.
Apa yang ingin saya tunjukkan adalah yang fordigunakan ketika Anda perlu mengulangi urutan. Urutan yang dihasilkan memiliki titik awal, interval, dan kondisi terminating. Ini secara ringkas ditentukan dalam forpernyataan. Jika Anda menemukan diri Anda sendiri (1) tidak termasuk bagian langkah foratau (2) menentukan sesuatu seperti truekondisi penjaga, maka Anda tidak boleh menggunakan forloop!
The whileloop digunakan untuk melanjutkan proses sementara kondisi tertentu terpenuhi. Jika Anda tidak memproses urutan, maka Anda mungkin ingin whilelingkaran sebagai gantinya. Argumen kondisi penjaga serupa di sini, tetapi keputusan antara a whiledan forloop harus sangat sadar. The whileloop 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_eachcukup menyakitkan di C ++ karena sejumlah alasan. Dalam banyak kasus memisahkan tubuh dari forloop dalam fungsi yang berdiri bebas (sementara agak menyakitkan) menghasilkan solusi yang jauh lebih bersih. Ketika bekerja dengan koleksi, mempertimbangkan std::for_each, std::transformatau 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 forloop akan hilang sebagaimana jenis diskusi ini.
int i = 10; while(i --> 0) { /* stuff */ }