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

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

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

सिंटैक्स

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

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

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

लूप-स्टेटमेंट - लूप के लिए बॉडी जिसमें एक या अधिक स्टेटमेंट होते हैं जिन्हें रेंज-एक्सप्रेशन के अंत तक बार-बार निष्पादित किया जाना है।

पारंपरिक लूप के लिए . के साथ तुलना -

// Iterating over array
int arr[] = { 10,20,30,40,50 };
for (int num : arr)
printf("%d, ",num);
Is same as:
for ( int i=0;i<5;i++ )
printf("%d, ",arr[i]);

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

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

जारी रखें - वर्तमान पुनरावृत्ति को छोड़ देता है और अगले पर चला जाता है

गोटो − लूप से निकलकर स्टेटमेंट पर जाता है जिसके बाद लेबल होता है -

के लिए श्रेणी-आधारित के लाभ

  • प्रयोग करने में आसान और सरल वाक्य रचना।

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

  • यदि डेटा प्रकार की श्रेणी-घोषणा ज्ञात नहीं है, तो इसके स्थान पर ऑटो विनिर्देशक का उपयोग किया जा सकता है, जो इसे स्वचालित रूप से श्रेणी-अभिव्यक्ति के प्रकार के साथ संगत बनाता है।

  • कोई सशर्त बयान या वेतन वृद्धि/कमी विवरण की आवश्यकता नहीं है।

  • उस स्थिति में सबसे अच्छा जहां पूरे कंटेनर को एक बार में पुनरावृत्त किया जाना है।

श्रेणी-आधारित के नुकसान

  • प्रारंभ () और अंत () के बीच प्रत्येक तत्व पर पुनरावृति। विशिष्ट अनुक्रमणिका का इलाज नहीं किया जा सकता है।

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

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

उदाहरण

#include <iostream>
#include <vector>
#include <map>
int main(){
   int arr[] = { 10,20,30,40,50 };
   // traditional for
   for ( int i=0;i<5;i++ )
      printf("%d, ",arr[i]);
      printf("\n");
   for (int num : arr)
      printf("%d, ",num);
      printf("\n");
   // for character array
      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++ कार्यक्रम

    0 और फलन f(x) a और b के बीच होना चाहिए अर्थात f(x) =[a, b ]. कार्य द्विभाजन विधि का उपयोग करके फ़ंक्शन f(x) में अंतराल a और b के बीच स्थित रूट का मान ज्ञात करना है। द्विभाजन विधि क्या है? द्विभाजन विधि का प्रयोग a और b द्वारा परिभाषित दी गई सीमाओं के भीतर फलन f(x) में एक मूल का मान ज्ञात करने के

  1. सी++ में पिरामिड के आयतन के लिए कार्यक्रम

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

  1. QuickSort के लिए C++ प्रोग्राम?

    क्विकसॉर्ट एक छँटाई तकनीक है जो एक क्रमबद्ध सूची (सरणी) को क्रमबद्ध करने के लिए तुलना का उपयोग करती है। Quicksort को पार्टीशन एक्सचेंज सॉर्ट के रूप में भी जाना जाता है। यह एक स्थिर प्रकार नहीं है, क्योंकि समान प्रकार की वस्तुओं का सापेक्ष क्रम संरक्षित नहीं है। क्विकसॉर्ट एक सरणी पर काम कर सकता है,