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.
Mündəricat
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
- For_each üstünə hər hansı bir iteratorla işləyən bir alqoritm yazmağımıza imkan verir.
- Silly typing bugs azaldıla bilər.
- for_each, 'for loop' dan daha ümumidır, çünki istənilən konteyner üzərində təkrarlamaq üçün istifadə edə bilərik.
- for_each daha çox oxunaqlı kod hazırlayır.
- Performans: for_each olan kod daha səmərəlidir.
