Funksiya shablonlari
Funksiya shablonlari (function templates) ham funksiya jukleniwine uqsas
tusinik. Bunda en’ tiykarg’i parq funksiya shablonlarinda amel ham birdey jol
menen orinlanadi. Maselen bir neshe sanlar ishinen en’ ulkenin tabiw kerek bolsin.
Sanlar toplami tek tipi menen parqlanadi, int, double yaki float. Islew algoritmi bolsa
usi. Bul jag’dayda biz funksiyalardi juklep otirmasdan, shablon jazip qoyamiz.
Funkisya shabloni yaki jukleniwisiz ham bul maseleni sheshiw mumking’o degen
soraw payda boladi. Maselen, eger biz kiretugin parametrlardin’ hammesin long
double qilsaq, qalegen sanli tipdegi argumentti bere alamiz, sebebi kompilyator o'zi
avtomatik tarizde kiriw tiplerin long double ga o'zgertiredi. Lekin, eger biz bunday
funksiya jazatugin bolsaq, hotiradan ham tezlikden utilamiz. programmamizda tek
char tipindegi, bir baytli manisler menen islewimiz mumkin. long double bolsa 10
bayt, ham en’ ulken sandi aniqlaw ushin sanlardi salistirganimizda, long double
manislerdi salistiriw char tipindegi manislerdi salistiriwdan ko're ancha ko'p waqt
aladi. Qalaberse, har dayim ham kompilyator tiplerdi birinen ekinshisine tuwri
keltire aladi.
Shablonlardin strukturasi menen tanisayiq. Bizin’ funksiya eki kiriw
argumentin bir birine qossin, ham juwaoti qaytarsin.
template
T summa(T a, T b) {
return ( a + b);
}
Shablon funksiya dag’azasi ham aniqlaniwinan aldin template <> anlatpasi
jaziladi, <> qawsirmalardan keyin noqat-utir (;) qoyilmaydi. <> qawslar ishinde
funksiya kiriw parametrleri, shigiw manisi ham lokal o'zgeriwshiler tipleri beriledi.
Usi formal tiplerdin’ har birinin’ aldinda class yaki typename (tip ismi) so'zi qoyiliw
kerek. joqaridagi misalda T nin’ ornina qalegen basqa identefikator qoyiw mumkin.
Misallar bereyik.
template juwap
kolemKub(uzinliq a, englik b, biyiklik c);
template T maximum(T k, T l);
Joqarida dazg’an shablonimizdi qollag’an halg’a bir misal keltiremiz.
// Shablonlar menen islew
# include
template
T summa(T a, T b) {
return ( a + b );
}
int main()
{
int x = 22, y = 456;
float m = .01, n = 56.90;)
cout << "int: 22 + 456 = " << summa(x,y) << endl;
cout << "float: 0.01 + 56.90 = " << summa(0.01,56.90) << endl;
return (0);
}
Ekranda:
int: 22 + 456 = 478
float: 0.01 + 56.90 = 56.91
Shablonlardi funksiyalardan tisqari klaslarg’a da qollasa boladi. Ko'rip
turg’animizday, shablonlar tek bir martebe jaziladi. Keyin bolsa mas keletugin tipler
qoyilip, jazilip keteberedi. Negizinde shablonlar C++ tin’ standartinda juda ko'p
qollanilg’an. Eger bilip isletilse, shablonlar programisttin’ en’ ku’shli quralina
aylaniwi mumkin. jane shablonlar
Do'stlaringiz bilan baham: |