यहाँ एक और जवाब है कि कोई भी अभी तक साथ नहीं आया है। 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 */ }