C ++ for_each లూప్


పరిధికి శ్రేణిని వర్తించండి

for_each సేకరణ యొక్క మూలకాల పరిధికి లూప్ ఒక ఫంక్షన్‌ను వర్తిస్తుంది. మరో మాటలో చెప్పాలంటే, సేకరణలోని ప్రతి మూలకం ఒక పారామితిగా ఫంక్షన్‌కు పంపబడుతుంది మరియు సేకరణలో ఎన్ని మూలకాలు ఉన్నాయో ఫంక్షన్ అమలు చేయబడుతుంది. ఈ లూప్ a లో నిర్వచించబడింది అల్గోరిథం శీర్షిక కాబట్టి for_each ఉపయోగించడానికి మీ ప్రోగ్రామ్‌లో ఈ శీర్షికను చేర్చాలి

#include

For_each లూప్ యొక్క వాక్యనిర్మాణం క్రింద ఉంది

For_each యొక్క సింటాక్స్

for_each (InputIterator first, InputIterator last, Function fn)

for_each ఫంక్షన్ వర్తిస్తుంది fn పరిధిలోని ప్రతి మూలకం నుండి ప్రారంభమవుతుంది మొదటి కు చివరిది.
#include 
#include 
using namespace std;

void fun1(int x) 
{
    cout << x << " ";
}

struct Class1 // object type function
{           
    void operator() (int x) 
    {
        cout << x << " ";
    }
} obj1;


int main() 
{
    int arr[] = {11, 21, 4, 13};
    for_each(arr, arr + 4, fun1);
    cout << endl;
  	for_each(arr, arr + 4, obj1);
    return 0;
}

పై కోడ్ యొక్క అవుట్పుట్ ఉంటుంది

11 21 4 13
11 21 4 13

పైన ఉన్న కోడ్‌ను ఉపయోగించి కూడా వ్రాయవచ్చు vector క్రింది విధంగా

#include 
#include 
using namespace std;

void fun1(int x) 
{
    cout << x << " ";
}

struct Class1 // object type function
{           
    void operator() (int x) 
    {
        cout << x << " ";
    }
} obj1;


int main() 
{
    vector v1;
    v1.push_back(11);
    v1.push_back(23);
    v1.push_back(4);
    v1.push_back(13);
    for_each(v1.begin(), v1.end(), fun1);        
    cout << endl;
	for_each(v1.begin(), v1.end(), obj1);        
    return 0;
}

For_each లో మినహాయింపు

ఫంక్షన్ ఒక మినహాయింపు విసిరితే అప్పుడు for_each అదే మినహాయింపును కూడా విసిరివేస్తుంది మరియు లూప్‌ను విచ్ఛిన్నం చేస్తుంది / ముగించింది. మినహాయింపు కేసుకు క్రింద ఒక ఉదాహరణ.

#include 
#include 
using namespace std;

void fun1(int x) 
{
    cout << x << " ";
    if (x % 2 == 0)
    {
        throw 100;
    }
}

struct Class1 // object type function
{           
    void operator() (int x) 
    {
        cout << x << " ";
        if (x % 2 == 0)
        {
            throw 100;
        }            
    }
} myobject;

int main() 
{
    vector v1;
    v1.push_back(11);
    v1.push_back(23);
    v1.push_back(4);
    v1.push_back(13);

    try 
    {
        for_each(v1.begin(), v1.end(), fun1);        
    } 
    catch (int i) 
    {
        cout << endl << "Got exception...Value thrown is " << i << endl;
    }
    try 
    {
        for_each (v1.begin(), v1.end(), myobject);
    } 
    catch (int i) 
    {
        cout << endl << "Got exception...Value thrown is " << i << endl;
    }    
    return 0;
}

పై కోడ్ యొక్క అవుట్పుట్ ఉంటుంది

11 23 4
మినహాయింపు వచ్చింది… విసిరిన విలువ 100
11 23 4
మినహాయింపు వచ్చింది… విసిరిన విలువ 100

For_each loop యొక్క ప్రయోజనాలు

  1. ఏదైనా ఇటరేటర్‌తో పనిచేసే for_each పైన ఒక అల్గోరిథం రాయడానికి మాకు అనుమతిస్తుంది.
  2. వెర్రి టైపింగ్ దోషాలను తగ్గించవచ్చు.
  3. for_each 'for loop' కన్నా చాలా సాధారణమైనది, ఎందుకంటే మనం దీన్ని ఏ రకమైన కంటైనర్‌పైనా మళ్ళించటానికి ఉపయోగించవచ్చు.
  4. for_each మరింత చదవగలిగే కోడ్ చేస్తుంది.
  5. పనితీరు: for_each కలిగి ఉన్న కోడ్ మరింత సమర్థవంతంగా ఉంటుంది.