Mavzu: Shablonlarning



Yüklə 94,26 Kb.
səhifə1/2
tarix14.12.2023
ölçüsü94,26 Kb.
#177880
  1   2
refarad umar



























720-21gurx Fayzullayev Umarxon
Mavzu: Shablonlarning standart kutubxonasi (stl). Stl komponentalar





Mavzu: Shablonlarning standart kutubxonasi (stl). Stl komponentalar
Umumlashgan yoki unifikasiyalangan dasturlashning maqsadi tartiblash kabi ko‘p qo‘llaniluvchi algoritmlar va sinflar saqlanuvchi universal kutubxonalar yaratish orqali dasturlash jarayonin avtomatlashtirishdan iboratdir. Shu bilan birga, bu kutubxonaga kiruvchi funksiyalar universal xarakterga ega bo‘lishi, ya’ni ixtiyoriy turdagi ma’lumotlar ustida amallar bajarish imkonini berishi lozim.


STL bilan tanishish
Umumlashgan yoki unifikasiyalangan dasturlashning maqsadi tartiblash kabi ko‘p qo‘llaniluvchi algoritmlar va sinflar saqlanuvchi universal kutubxonalar yaratish orqali dasturlash jarayonin avtomatlashtirishdan iboratdir. Shu bilan birga, bu kutubxonaga kiruvchi funksiyalar universal xarakterga ega
bo‘lishi, ya’ni ixtiyoriy turdagi ma’lumotlar ustida amallar bajarish imkonini berishi lozim.
Shablonlarga asoslangan umumlashgan dasturlashga misol Stepanov
va Target tomonidan yaratilgan va C++ tili standartiga kiritilgan STL (Standart Template Library) kutubxonasidir.

  • Konteynerlar

  • Algoritmlar

  • Iteratorlar



Kutubxona yadrosi uchta elementdan iborat
Konteynerlar — bu boshqa elementlarni saqlash uchun mo‘ljallangan sinflar shablonlaridir. Konteynerlar asosiy xususiyati shundaki ular ixtiyoriy tipdagi elementlarni o‘zida saqlash uchun mo‘ljallangan. To‘g‘rirog‘i, har bir tur uchun shablon nusxasi kerak bo‘lganda, kompilyator tomonidan
avtomatik tarzda yaratiladi. Algoritmlar konteyner elementlari ustidan operasiyalar bajaradi.
Konteynerlar — bu boshqa elementlarni saqlash uchun mo‘ljallangan sinflar shablonlaridir. Konteynerlar asosiy xususiyati shundaki ular ixtiyoriy tipdagi elementlarni o‘zida saqlash uchun mo‘ljallangan. To‘g‘rirog‘i, har bir tur uchun shablon nusxasi kerak bo‘lganda, kompilyator tomonidan
avtomatik tarzda yaratiladi. Algoritmlar konteyner elementlari ustidan operasiyalar bajaradi.
Bibliotekada qidirish, saralash va almashtirish uchun algoritmlar mavjud. Algoritmlar elementlar ketma_ketligi
bilan ishlash uchun mo‘ljallangan. Algoritmlar asosiy xususiyati shuki ular ixtiyoriy konteynerlar bilan ishlay oladi.


vector — dinamik massiv list — chiziqli ro‘yxat deque — ikki tarafli tartib set — to‘plam
multiset — har bir elementi noyob bo‘lishi shart emas to‘plam Konteynerlar asosiy va hosila konteynerlarga ajratiladi. Asosiy konteynerlarga quyidagilar kiradi:
multimap — har bir kalit bilan ikkita yoki ko‘proq qiymatlarbog‘langan Hosila konteynerlarga quyidagilar kiradi:

  • multimap — har bir kalit bilan ikkita yoki ko‘proq qiymatlarbog‘langan Hosila konteynerlarga quyidagilar kiradi:

  • stack — stek

  • queue tartib

  • priority_queue prioritetli tartib

STL kutubxonasidagi standart shablonlardan foydalanish uchun kerakli header fayllarni dasturga ulash lozim.
vector
Birinchi bo’lib STL dagi vector bilan ishlaymiz. Buning uchun vector header faylini dasturga ulaymiz.
Vector tipidagi o’zgaruvchi yaratamiz. Buning uchun vector var_name
Vector tipidagi o’zgaruvchi yaratamiz. Buning uchun vector var_name
Bu yerda
type – vector tarkikibiga kiruvchi o’zgaruvchilarning toifasi var_name – vectorning nomi
STL kutubxonasidagi maxsus vectorning ichiga ma’lumot qo’shish uchun quyidagi funksiyadan foydalaniladi.
push_back( value )
- value –vectorga qo’shiluvchi qiymat


Vector v = new Vector(int size);
Iteratorlar — bu konteyner hamma elementlarini ko‘rib chiqish va qayta ishlashga imkon beruvchi obyektlardir. Iteratorlar algoritmlar universalligini ta’minlovchi asosiy vositadir.
Iteratorlar — bu konteyner hamma elementlarini ko‘rib chiqish va qayta ishlashga imkon beruvchi obyektlardir. Iteratorlar algoritmlar universalligini ta’minlovchi asosiy vositadir.
Itaratorlar bilan ko‘rsatkichlar kabi ishlash mumkin. Ularga
*, inkrement, dekrement operatorlarni qo‘llash mumkin. Iterator tipi sifatida xar xil konteynerlarda aniqlangan iterator tip e’lon qilinadi.
Iteratorlarning beshta tipi mavjud:

  1. Kiritish iteratorlar (input_iterator) tenglik, nomini o‘zgartirish va inkrementa operatsiyalarni qo‘llaydi.

==, !=, *i, ++i, i++, *i++
Kiritish iteratsiyasining maxsus xolati istream_iterator iborat.

  1. Chiqarish iteratorlar (output_iterator) o‘zlashtirish operatorning chap tarafidan imkon bo‘lgan isimning o‘zgartirish va inkrementa operatsiyalar qo‘llanadi.

  1. Chiqarish iteratorlar (output_iterator) o‘zlashtirish operatorning chap tarafidan imkon bo‘lgan isimning o‘zgartirish va inkrementa operatsiyalar qo‘llanadi.

++i, i++, *i=t, *i++=t
Chiqarish iteratsiyasining maxsus xolati ostream_iterator.

  1. Bitta yo‘nalishdagi iteratorlar (forward_iterator)

kiritish/chiqarish operatsiyalarning barchasini qo‘llaydi, bundan tashqari chegarasiz o‘zlashtirishning imkonini beradi.
==, !=, =, *i, ++i, i++, *i++

  1. Ikki yo‘nalishdagi iteratorlar (biderectional_iterator) forward-iteratorlarning barcha xususiyatlariga ega, bundan tashqari, konteynerni ikkita yo‘nalishi bo‘yicha o‘tish imkonini beradigan qo‘shimcha dekrementa (--i, i--, *i--) operatsiyasiga ega.

  2. Ixtiyoriy ruxsatga ega bo‘lgan iteratorlar (random_access_iterator) biderectional-iteratorlarning barcha xususiyatlariga ega, bundan tashqari solishtirish va manzil arifmetikasi operatsiyalarni qo‘llaydi.

  1. Ixtiyoriy ruxsatga ega bo‘lgan iteratorlar (random_access_iterator) biderectional-iteratorlarning barcha xususiyatlariga ega, bundan tashqari solishtirish va manzil

arifmetikasi operatsiyalarni qo‘llaydi.


i+=n, i+n, i-=n, i-n, i1-i2, i[n], i1<=i2, i1>i2, i1>=i2 Shuningdek, STLda teskari iteratorlar (reverse iterators)
qo‘llaniladi. Ketma-ketlikni teskari yo‘nalishda o‘tuvchi ikki yo‘nalishli yoki ixtiyoriy ruxsatga ega bo‘lgan iteratorlar
teskari iteratoralar bo‘lishi mumkin. Iterator itr = collection.iterator();
  1   2




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin