Hər loop üçün C ++

Sistem dizaynı ilə bağlı müsahibə sualları o qədər açıq ola bilər ki, düzgün hazırlaşmağı bilmək çox çətindir. İndi satın aldıqdan sonra Amazon, Microsoft və Adobe-nin dizayn dövrlərini sındıra bilirəm Bu kitabı. Gündəlik bir yenidən nəzərdən keçirin dizayn sualı və söz verirəm ki, dizayn dövrünü sındıra bilərsiniz.

Funksiyanı Aralığa tətbiq edin

for_each loop bir kolleksiyanın elementləri aralığına bir funksiya tətbiq edir. Başqa sözlə, kolleksiyadan olan hər bir element bir parametr olaraq funksiyaya ötürüləcək və bir kolleksiyada mövcud olan elementlərin sayı icra ediləcəkdir. Bu döngə a alqoritm başlıq, bu başlığı for_each istifadə etmək üçün proqramınıza daxil etməlisiniz

#include

Aşağıda for_each loopunun sintaksisidir

For_each sözdizimi

for_each (InputIterator first, InputIterator last, Function fn)

for_each funksiyası tətbiq olunur fn aralığındakı hər bir element üçün ilk üçün sonuncu.
#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;
}

Yuxarıdakı kodun çıxışı olacaqdır

11 21 4 13
11 21 4 13

Yuxarıdakı koddan istifadə etməklə də yazmaq olar vector aşağıdakı kimi

#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;
}

Hər birində istisna

Əgər funksiya o zaman istisna edərsə for_each eyni istisnanı atacaq və döngəni pozacaq / dayandıracaq. Aşağıda istisna vəziyyəti üçün bir nümunə var.

#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;
}

Yuxarıdakı kodun çıxışı olacaqdır

11 23 4
İstisna var ... Atılan dəyər 100-dür
11 23 4
İstisna var ... Atılan dəyər 100-dür

For_each loopunun üstünlükləri

  1. For_each üstünə hər hansı bir iteratorla işləyən bir alqoritm yazmağımıza imkan verir.
  2. Silly typing bugs azaldıla bilər.
  3. for_each, 'for loop' dan daha ümumidır, çünki istənilən konteyner üzərində təkrarlamaq üçün istifadə edə bilərik.
  4. for_each daha çox oxunaqlı kod hazırlayır.
  5. Performans: for_each olan kod daha səmərəlidir.

 

Crack Sistemi Dizayn Müsahibələri
Translate »