|
Tiplarni dinamik tarzda aniqlash. Reja: Tiplarni dinamik tarzda aniqlash
|
bet | 46/143 | Sana | 20.07.2024 | Hajmi | 0,81 Mb. | | #268096 |
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.
|
| |