Tiplarni dinamik tarzda aniqlash. Reja: Tiplarni dinamik tarzda aniqlash




Download 0,81 Mb.
bet46/143
Sana20.07.2024
Hajmi0,81 Mb.
#268096
1   ...   42   43   44   45   46   47   48   49   ...   143
Bog'liq
Tiplarni dinamik tarzda-fayllar.org





5.3-dastur. Output


daryo satr qismi borlarining soni: 5


elementlar soni: 2

sort() algoritmi – foydalanuvchining saralash funksiyasini qurish uchun ishlatiladi. Oldinlari sort() funksiyasi bilan massivlarni saralagan bo‘lshingiz mumkin, ammo sort() funksiya bu bilan chegaralanib qolmaydi. Bu funksiya yordamchi bir funksiya oladi va bu argument asosida foydalanuvchi o‘zining saralash uslubini amalga oshirishi mumkin. Funksiya esa taqqoslash uchun paramert ikkita parametr oladi. Agar birinchi element ikkinchisidan oldin bo‘lishi kerak bo‘lsa, ikkinchi paramert true qiymat qaytarishi kerak. Odatda sort() funksiyasi o‘sish tartibida saralaydi. Berilgan massivni kamayish tartibida saralash dasturini tuzaylik.

5.4-dastur. sort() funksiyasidan foydalanish.

#include "stdafx.h" #include #include #include


using namespace std;

bool greater(int a, int b)


{

return (a > b);


}
bool d_greater(int a, int b)
{
return (b > a);
}
int main()

{array arr = { 28, 18, 16, 25, 25 }, arr_one;


arr_one = arr; sort(arr.begin(), arr.end(), greater); sort(arr_one.begin(), arr_one.end(),d_greater );
for (int i : arr) {cout << i << ' ';}
cout << endl;
for (int i : arr_one ) { cout << i << ' ';
} cout << endl;
system("pause"); return 0;
}





5.4-dastur. Output


28 25 25 18 16


16 18 25 25 28


Dasturdan ko‘rinadiki, o‘zimiz saralash algoritmini boshidan yozishimiz shart emas ekan, buning uchun bir qator fragment yetarli bo‘ldi. Ammo C++ tili, juda ko‘p saralashning kamayish tartibda foydalanganligi uchun greater{} tipli funksiyasi bo‘lishi mumkin ( kutubxonasida bor). Biz o‘zimizning greater funksiyasidan foydalanish uchun sort(arr.begin(), arr.end(), greater); dastur fragmentini yozdik, ammo kutubxonanikini chaqirish uchun sort(arr.begin(), arr.end(), std::greater{}); kabi fragment yozishimiz kerak. Eʻtibor bering,
greater{} funksiyasi figurali qavsga muxtoj, shuning uchun uni funksiya deb atalmaydi, maʻlumot tipi deb yuritiladi va undan foydalanish uchun nusxasini yaratishimiz kerak. Figurali qavslar anonim obʻyektlarni yaratish uchun xizmat qiladi.
for_each() algortmi – konteynerning barcha elementlari o‘tish. Bu for_each() funksiyasi kiruvchi maʻlumot sifatida to‘plamni qabul qiladi va foydalanuvchining funksiyasini joriy to‘plamdagi har bir element uchun qabul qiladi. Buning qulaylik tomoni shundaki, agar bir amalni to‘plamning barcha elementlari bo‘yicha bajarish kerak bo‘lsa, for_each() funksiyasi as qotadi. Berilgan massivning barcha elementlarini chiqarish uchun for_each() funksiyasidan foydalanishni dasturini keltiraylik.
5.5-dastur. for_each() funksiyasidan foydalanish.

#include "stdafx.h"


#include #include #include

using namespace std;


void doubleNumber(int &i){ i = i;

}
int main(){


array arr = { 1, 2, 3, 4 }; for_each(arr.begin(), arr.end(), doubleNumber);
for (int i : arr){ cout << i << ' ';
}
cout << endl; system("pause"); return 0;
}


Yosh dasturchilar uchun bu takrorlanish jarayonini oddiy for operatoriga aniq parametrlarni qo‘yib ishlatish maquldir. for_each() funksiyasining yutuqlari shandan iboratki, takrorlanish tanasidan qayta foydalanish va paralellashtirish, katta proektlarda katta maʻlumotlar, turli tiplari har xil maʻlumotlar tuzilmasi bilan ishlgandan eng yaxshi isntrument bo‘lib xizmat qiladi.

Download 0,81 Mb.
1   ...   42   43   44   45   46   47   48   49   ...   143




Download 0,81 Mb.

Bosh sahifa
Aloqalar

    Bosh sahifa



Tiplarni dinamik tarzda aniqlash. Reja: Tiplarni dinamik tarzda aniqlash

Download 0,81 Mb.