यहाँ एक और जवाब है कि कोई भी अभी तक साथ नहीं आया है। forजब आपको किसी अनुक्रम पर पुनरावृति करने की आवश्यकता होती है तो लूप का उपयोग किया जाना चाहिए । का उपयोग करना !=लूप के लिए समाप्ति की स्थिति को बताते हुए सबसे संक्षिप्त विधि है। हालांकि, कम प्रतिबंधात्मक ऑपरेटर का उपयोग करना एक बहुत ही रक्षात्मक प्रोग्रामिंग मुहावरा है। पूर्णांकों के लिए यह कोई फर्क नहीं पड़ता है - यह एक अधिक विशिष्ट उदाहरण के बिना सिर्फ एक व्यक्तिगत पसंद है। पुनरावृत्तियों के साथ संग्रह पर लूपिंग आप !=उन कारणों के लिए उपयोग करना चाहते हैं जो दूसरों ने बताए हैं। आप के दृश्यों पर विचार करें floatया doubleहै, तो आप से बचना चाहते हैं !=हर कीमत पर।
जो मैं इंगित करना चाहता था, वह forतब होता है जब आपको किसी अनुक्रम पर पुनरावृति करने की आवश्यकता होती है। उत्पन्न अनुक्रम में एक प्रारंभिक बिंदु, एक अंतराल और एक समाप्ति स्थिति है। ये forकथन के भीतर स्पष्ट रूप से निर्दिष्ट हैं । यदि आप अपने आप को या तो (1) forया (2) के चरण भाग को शामिल नहीं करते हैं, trueजैसे कि गार्ड की स्थिति के रूप में कुछ निर्दिष्ट करना , तो आपको forलूप का उपयोग नहीं करना चाहिए !
whileपाश प्रसंस्करण जारी रखने के लिए, जबकि एक विशिष्ट स्थिति उत्पन्न होने पर किया जाता है। यदि आप एक अनुक्रम को संसाधित नहीं कर रहे हैं, तो आप शायद whileइसके बजाय एक लूप चाहते हैं । गार्ड की स्थिति के तर्क यहां समान हैं, लेकिन whileएक forलूप के बीच का निर्णय बहुत सचेत होना चाहिए। whileपाश IMO सी ++ हलकों में अंडर सराहना की है।
यदि आप वस्तुओं के संग्रह (एक बहुत ही आम- forउपयोग) का प्रसंस्करण कर रहे हैं , तो आपको वास्तव में अधिक विशिष्ट विधि का उपयोग करना चाहिए। दुर्भाग्य से, std::for_eachकई कारणों से C ++ में बहुत दर्दनाक है। कई मामलों forमें एक फ्री-स्टैंडिंग फ़ंक्शन (जबकि कुछ दर्दनाक) में लूप के शरीर को अलग करने से बहुत अधिक क्लीनर समाधान होता है। जब संग्रह के साथ काम करने पर विचार std::for_each, std::transformया std::accumulate। इस तरह से व्यक्त किए जाने पर कई एल्गोरिदम का कार्यान्वयन संक्षिप्त और क्रिस्टल स्पष्ट हो जाता है। यह उल्लेख करने के लिए नहीं कि लूप के शरीर को एक अलग फ़ंक्शन / विधि में अलग करना आपको एल्गोरिथ्म, इसकी इनपुट आवश्यकताओं और परिणामों पर ध्यान केंद्रित करने के लिए मजबूर करता है।
यदि आप जावा, पायथन, रूबी, या यहां तक कि सी ++ 0x का उपयोग कर रहे हैं , तो आपको एक उचित संग्रह फोर्क लूप का उपयोग करना चाहिए । जैसे ही C ++ कंपाइलर इस सुविधा को लागू करते हैं, कई प्रकार के forलूप गायब हो जाएंगे क्योंकि इस प्रकार के विचार-विमर्श होंगे।
int i = 10; while(i --> 0) { /* stuff */ }