Shablonlar standart kutubxonasining tuzilmasi. Iteratorlar bilan ishlash



Download 136,01 Kb.
bet2/2
Sana11.01.2022
Hajmi136,01 Kb.
#346821
1   2
Bog'liq
shablonlar standart kutubxonasining tuzilmasi

Asosiy qism.

  1. Shablonlar

C++ tili qayta foydalaniluvchi dasturiy ta’minotni ishlab chiqish uchun shablon funksiyalar va sinflar bilan ta’minlaydi. Shablonlar funksiyalar va sinflarda turlarni muvofiqlashtirish (sozlash) qobiliyatini taqdim etadi. Bunday qobiliyat bilan, kompilyator aniq bir tur o`rnida qabul qila oladigan umumiy turga sifatida bitta funksiya yoki bitta sinfni aniqlashimiz mumkin.

Shablonlarsiz C++ da bir funksiyani turli xil tiplar ustida bajarish uchun har bir tur uchun alohida funcksiya yaratish kerak. Masalan(kiritilgan ifodani ekranga chiqarish):

#include

#include

using namespace std;

void Printf(float ifoda){

cout << "ifoda = " << ifoda << endl;

}

void Prints(string ifoda){



cout << "ifoda = " << ifoda << endl;

}

void Printi(int ifoda){



cout << "ifoda = " << ifoda << endl;

}

int main() {



Printi(2);

Prints("salom");

Printf(5.34);

return 0;

}

Shablon yordamida esa bitta funksiya yaratish yetarli bo’ladi:



#include

#include

using namespace std;

template

void Print(T ifoda){

cout<< "ifoda = " << ifoda << endl;

}

int main() {



Print(2);

Print("salom");

Print(5.34);

return 0;

}

Shablon yaratish uchun avval template so’zi yoziladi keyin <> ichida class yoki typname sozi va shablonning nomi yozilishi yetarli. Misol uchun: template ifoda G turini hosil qiladi va bu tur dastur davomida ixtiyoriy boshqa turga o’tishi mumkin.



Ya’ni G 5; ifodada G int tipi bajaradigan funksiyani bajarsa G “ajoyib” ifodada G string ga o’zgaradi.

Shablonlar turi aniq bo’lmagan o’zgaruvchilar bilan ishlashda qo’l keladi.

Shablonlar: template myobject();

Korinishida ham bo’lishi mumkin bu holda shablon faqat tur_nomi ifodada yozilgan turnigina qabul qilishi mumkin.



  1. Shablonlar standart kutubxonasi.

Ba’zi dasturlash tillarida malumotlar tuzilmalari ustida amallar bajarishni osonlashitirish maqsadida shablonlar standard kutubxonasidan foydalaniladi. STL (shablonlar kutubxonasi) ni uch qismga ajratishimiz mumkin ular:

1.konteynerlar

2.algoritmlar

3.iteratorlar

Kiritilgan ma’lumotni daturlash tili o’qiy oladigan ko’rinishda qabul qilish va joylash uchun konteynerlardan foydalaniladi. Konteynerlar malum bir turdagi obeyktlar to’plamini boshqarish uchun ishlatiladi. Dek, stek, massiv, list, vector, map kabilarni konteynerlarga misol qilib keltirishimiz mumkin.

Konteynerlar ustida qandadaydur, masalan qidirish yoki saralash amalini bajarish uchun algoritmlardan foydalaniladi.

Iteratorlar esa konteynerlarning biror bir qismiga otish uchun foydalaniladi.

#include

#include

using namespace std;

int main() {

// vektor yaratamiz

vector vec;

int i; // vec nimg orginal olchamini chiqaramiz

cout << "vector size = " << vec.size() << endl;

// 5gaca sonlarni ni qoshamiz

for(i = 0; i < 5; i++) { vec.push_back(i); }

// keyingi o'lchamini chiqaramiz.

cout << "keyingi olcham = " << vec.size() << endl;

for(i = 0; i < 5; i++) {

cout << " vec [" << i << "] = " << vec[i] << endl; }

//iteratordan foydalanib vektor elementlariga kiramiz.

vector::iterator v = vec.begin();

while( v != vec.end()) {

cout << "v = " << *v << endl; v++;

}


return 0; }



  1. Iteratorlarning ishlatilishi.

Shablonlar kutubxonasi konteynerlari joylashgan xotira adresini ko’rsatish uchun

Iteratorlardan foydalaniladi. ular dasturning kompayling vaqtini qisqartiradi.

Iteratorlardan foydalanish uchun dasturga #include qatorni qo’shish ya’ni iterator kutubxonasini chaqirish kerak.

begin() – bu funksiya konteynerning boshlangich pozitsiyasidagi ya’ni 1-elementni qaytaradi.

end() – bu funsiya konteyner oxirgi elementidan bitta keyingi adresni qaytaradi.

Iteratrolar 5 turga bo’linadi ular:



Kiritish,

Chiqarish,

Ulashish(forward)

Ikki yo’nalishli

Random access

Kiritish va chiqarish iteratorlari eng ko’p cheklangan iteratorlardur. Ular faqat bir tomonlama kiritish yoki chiqarish amallarini bajarishi mumkin.


konteyner

konteyner



Uchinchi tur iteratorlar kiritish dastlabki ikktasi bajaradigan funksiyalarni deyarli hammasini bajara oladi lekin ular ham faqat bir tomonlama.

konteyner

Ikki yonalishli iteratorlar ham forward iteratorlaga o’xshaydi faqat ular orqa tomondan ham konteynerga kirishi mumkin.

konteyner



Random access iteratorlari esa konteynerning ixtiyoriy qismidan kira oladi.

konteyner

Ikki yo’nalishli iteratorga misol:

#include

#include

#include

using namespace std;

int main() {

vector vec{10, 20, 30, 40, 50, 60, 70, 80, 90, 100};

vector ::iterator it;

vector :: reverse_iterator rev_it;

for(it = vec.begin(); it != vec.end(); it++)

cout<<*it<<" "; cout<< endl;

for(rev_it = vec.rbegin();

rev_it!= vec.rend(); rev_it++)

cout<<*rev_it<<" ";



III.Xulosa

Bu mustaqil ishni bajarish orqali

Standart shablonlar kutubxonasi

Mavzusidagi bilimlarinmi mustahkamlab yanada boyitib oldim. Malumotlar bilan ishlashda STL juda qo’l kelar ekan. Iteratorlar haqida kengroq tushunchaga ega bo’ldim. STL kutubxonasi tayyor funksiyalaridan foydalanib murrakkab tuyulgan amallarni soddaroq kod yozib amalga oshirish mumkin. Konteynerlar malumotni massiz, list, dek kabilar korinishiga ketiradi, Iteratorlar malumotni ixtiyoriy qismiga o’tishni ta’minlaydi, algoritmlar esa malumot ustida ish bajarishga ko’maklashadi.

Download 136,01 Kb.

Do'stlaringiz bilan baham:
1   2




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish