Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में रेंज-आधारित फॉर लूप


रेंज-आधारित फॉर लूप C++ 11 मानक में जोड़ा गया है और इसका पारंपरिक समकक्ष का अधिक कॉम्पैक्ट रूप है। रेंज-आधारित फॉर लूप का उपयोग किसी कंटेनर के तत्वों पर शुरुआत से अंत तक पुनरावृति करने के लिए किया जाता है। रेंज-आधारित फॉर लूप का सिंटैक्स इस प्रकार है -

सिंटैक्स

for( range-declaration : range-expression ) loop statement

range-declaration - यह range-expression के तत्वों के प्रकार के समान प्रकार के चर की घोषणा है। अक्सर range-expression में तत्वों के प्रकार को स्वचालित रूप से पहचानने के लिए auto कीवर्ड का उपयोग किया जाता है।

range-expression - तत्वों के अनुक्रम को दर्शाने के लिए उपयोग किया जाने वाला कोई भी व्यंजक। ब्रेसेस में तत्वों के अनुक्रम का भी उपयोग किया जा सकता है।

loop-statement - फॉर लूप का मुख्य भाग जिसमें एक या अधिक कथन होते हैं जो range-expression के अंत तक बार-बार निष्पादित होते हैं।

पारंपरिक for loop के साथ तुलना -

// सरणी पर पुनरावृति int arr[] = { 10,20,30,40,50 }; for (int num : arr) printf("%d, ",num); इसके समान है: for ( int i=0;i<5;i++ ) printf("%d, ",arr[i]);

यहां कोई आसानी से देख सकता है कि रेंज-आधारित फॉर लूप में सरणी का आकार गणना करने की कोई आवश्यकता नहीं है इसलिए कोई सशर्त अभिव्यक्ति आवश्यक नहीं है। साथ ही, इंक्रीमेंट या डिक्रीमेंट ऑपरेशन की कोई आवश्यकता नहीं है। उपरोक्त रेंज-आधारित फॉर लूप में num प्रत्येक पुनरावृत्ति के लिए सरणी arr[] के तत्व का मान शुरुआत से अंत तक लेता है। कोई तत्व तब तक नहीं छोड़े जाते जब तक कि जंप स्टेटमेंट में से एक निष्पादित नहीं होता।

Break - शेष सभी पुनरावृत्तियों के लिए लूप समाप्त करता है।

Continue - वर्तमान पुनरावृत्ति को छोड़ता है और अगली पर जाता है।

goto - लेबल के बाद आने वाले कथन पर कूदता है -

रेंज-आधारित फॉर के लाभ

  • उपयोग में आसान और सरल सिंटैक्स।

  • कंटेनर में तत्वों की संख्या या range-expression के आकार की गणना करने की आवश्यकता नहीं।

  • यदि range-declaration का डेटा प्रकार ज्ञात नहीं है तो उसके स्थान पर auto स्पेसिफायर का उपयोग किया जा सकता है, जो स्वचालित रूप से इसे range-expression के प्रकार के साथ संगत बनाता है।

  • कोई सशर्त कथन या इंक्रीमेंट/डिक्रीमेंट कथन आवश्यक नहीं।

  • पूरे कंटेनर को एक बार में पुनरावृति करने के मामले में सर्वश्रेष्ठ।

रेंज-आधारित फॉर के नुकसान

  • begin() और end() के बीच हर तत्व पर पुनरावृति करता है। विशिष्ट सूचकांकों का इलाज नहीं किया जा सकता।

  • एक या अधिक तत्वों को फिर से देखना और तत्वों के समूह को छोड़ना रेंज-आधारित फॉर लूप का उपयोग करके नहीं किया जा सकता।

  • सरणी को उल्टे क्रम में पुनरावृति नहीं किया जा सकता। इसके लिए लाइब्रेरी का उपयोग किया जाता है।

उदाहरण

#include <iostream> #include <vector> #include <map> int main(){    int arr[] = { 10,20,30,40,50 };    // पारंपरिक फॉर    for ( int i=0;i<5;i++ )       printf("%d, ",arr[i]);       printf("\n");    for (int num : arr)       printf("%d, ",num);       printf("\n");    // कैरेक्टर सरणी के लिए       char str[] = "Hello World";    for (char c : str)       printf("%c ",c);       printf("\n");    for (char c : "Hello World")       printf("%c ",c);       printf("\n");       std::map <int, char> MAP({{1, 'A'}, {2, 'B'}, {3, 'C'}});    for (auto m : MAP)       printf("{ %d, %c }", m.first,m.second); }

आउटपुट

10, 20, 30, 40, 50, 10, 20, 30, 40, 50, H e l l o W o r l d H e l l o W o r l d { 1, A }{ 2, B }{ 3, C }

  1. C++ प्रोग्राम बाईसेक्शन मेथड के लिए C++ प्रोग्राम बाईसेक्शन मेथड के लिए

    फंक्शन f(x) दिया गया है जिसमें संख्या a और b हैं जहां, f(a) * f(b) > 0 और फंक्शन f(x) a और b के बीच होना चाहिए यानी f(x) = [a, b]। कार्य बाईसेक्शन मेथड का उपयोग करके फंक्शन f(x) में अंतराल a और b के बीच स्थित रूट का मान खोजना है।बाईसेक्शन मेथड क्या है?बाईसेक्शन मेथड का उपयोग फंक्शन f(x) में दिए ग

  1. C++ में पिरामिड के आयतन का प्रोग्राम C++ में पिरामिड के आयतन का प्रोग्राम

    पिरामिड के बेस के प्रकार के आधार पर भुजाएं दी गई हैं, कार्य पिरामिड का आयतन गणना करना है।पिरामिड एक 3-D आकृति है जिसकी बाहरी सतहें त्रिकोणीय हैं जो सामान्य बिंदु पर मिलती हैं जिससे पिरामिड का तीक्ष्ण किनारा बनता है। पिरामिड का आयतन उसके बेस के प्रकार पर निर्भर करता है।पिरामिड के बेस के विभिन्न प्रका

  1. C++ में क्विकसॉर्ट प्रोग्राम C++ में क्विकसॉर्ट प्रोग्राम

    क्विकसॉर्ट क्या है? क्विकसॉर्ट एक सॉर्टिंग तकनीक है जो अनसॉर्टेड सूची (सरणी) को सॉर्ट करने के लिए तुलनाओं का उपयोग करती है। क्विकसॉर्ट को पार्टीशन एक्सचेंज सॉर्ट के नाम से भी जाना जाता है। यह एक स्थिर सॉर्ट नहीं है, क्योंकि समान सॉर्ट आइटम्स का सापेक्ष क्रम संरक्षित नहीं रहता। क्विकसॉर्ट एक सरणी प