Nazariy qism Standart shablon sinflar bibliotekasi



Yüklə 498,4 Kb.
tarix11.08.2022
ölçüsü498,4 Kb.
#117524
3-tajriba Dasturlash standart algoritmlar va iteratorlar
7 sinf informatika 2018 yil konspekt, 7 sinf informatika 2018 yil konspekt, Akademik1, 1-mavzu, Matnazarov Otamurot Davronbek ўгли, MINTAQA TURIZMIDA EKOLOGIK TURIZMNI RIVOJLANTIRISHNING AHAMIYATI- 5, mebellar va eg†och qurilish materiallarini tayerlash va tamirlashda mehnatni muhofaza qilish qoidalari av tomonidan 27 08 2009 y 1999-son bilan ro†(1), Iii. Hayot faoliyati xavfsizligi qismi, majmua MK

Tajriba ishi №3


Mavzu:. Standart algoritmlar va iteratorlar.

Ishning maqsadi: C++ dasturlash tilida standart algoritmlar, iteratorlar bilan ishlash ko’nikmalarini shakllantirish.



Nazariy qism
Standart shablon sinflar bibliotekasi.
Biblioteka yadrosi uchta elementdan iborat: konteynerlar, algoritmlar va iteratorlar. Konteynerlar (containers) – bu boshqa elementlarni saqlovchi obyektlar.
Masalan, vektor, chiziqli ro‘yxat, to‘plam. Assotsiativ konteynerlar (associative containers) kalitlar yordamida ularda saqlanadigan qiymatlarni tezkor olish imkonini yaratadi. Har bir sinf – konteynerida ular bilan ishlash uchun mo‘ljallangan funksiyalar to‘plami aniqlangan. Masalan, ruyxat elementlarni kiritish, chiqarish, va qo‘shish funksiyalarni o‘z ichiga oladi. Algoritmlar (algorithms) konteyner ichidagilar ustidan operatsiyalar bajaradi. Konteyner ichidagilarni initsializatsiyalash, qidirish, saralash va almashtirish uchun algoritmlar mavjud. Ko‘p algoritmlar konteyner ichidagi elementlarni chiziqi ro‘yxatini ifodalaydovchi ketma-ketlik (sequence) bilan ishlash uchun mo‘ljallangan. Iteratorlar (iterators) – bu konteynerga nisbatan ko‘rsatkich sifatida bo‘lgan obyektlar. Ular massiv elementlariga ruxsat oluvchi ko‘rsatkichlar kabi, konteyner ichidagiga ruxsat olish imkoni beradi.

  • vector dinamk massiv

  • list chiziqli ro‘yxat

  • deque ikki tarafli tartib

  • set to‘plam

  • multiset har bir elementi noyob bo‘lishi shart emas to‘plam

  • map kalit/ qiymat juftlikni saqlash uchun assotsiativ ro‘yxat

Bunda har bir kalit bitta qiymat bilan bog‘langan.

  • Multimap har bir kalit bilan ikkita yoki ko‘proq qiymatlar

bog‘langan

  • stack stek

  • queue tartib

  • priority_queue birinchi o‘rindagi tartib

Standart algoritmlar

Ixtiyoriy sinf-konteyner ko‘rsatilmagan holda konstruktor va destruktorni nusxalovchi konstruktorga ega. Ixtiyoriy obyekt uchun ko‘rsatilmagan holda konteynerda saqlanuvchi konstruktor mavjud bo‘lishi shart. Undan tashqari, obyekt uchun < va == operatorlar aniqlanish lozim.


Iteratorlar bilan ko‘rsatkichlar kabi ishlash mumkin. Ularga *, inkrement, dekrement operatorlarni qo‘llash mumkin. Iterator tipi sifatida har xil konteynerlarda aniqlangan iterator tip elon 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.
2. 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.
3. Bitta yo‘nalishdagi iteratorlar (forward_iterator) kiritish/chiqarish operatsiyalarning barchasini qo‘llaydi, bundan tashqari chegarasiz o‘zlashtirishning imkonini beradi.
==, !=, =, *i, ++i, i++, *i++
4. 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.
5. 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], i1i2, i1>=i2
Shuningdek, STLda teskari iteratorlar (reverse iterators) qo‘llaniladi. Ketmaketlikni teskari yo‘nalishda o‘tuvchi ikki yo‘nalishli yoki ixtiyoriy ruxsatga ega bo‘lgan iteratorlar teskari iteratoralar bo‘lishi mumkin.


Topshiriqlar
1. Yangi konteynerlar hosil qiling, uni standart funksiyalar yordamida elementlar bilan to’lating va for_each funksiyasi yordamida uni chop qiling;
2. Yangi konteynerlar hosil qiling, uni standart funksiyalar yordamida elementlar bilan to’lating find funksiyasi yordamida amallar bajaring;
3. Yangi konteynerlar hosil qiling, uni standart funksiyalar yordamida elementlar bilan to’lating count funksiyasi yordamida amallar bajaring;
4. Yangi konteynerlar hosil qiling, uni standart funksiyalar yordamida elementlar bilan to’lating equal funksiyasi yordamida amallar bajaring;
5. Yangi konteynerlar hosil qiling, uni standart funksiyalar yordamida elementlar bilan to’lating search funksiyasi yordamida amallar bajaring;
6. Iteratorlardan foydalanib list konteyneri ustida amallar bajaring;
7. Iteratorlardan foydalanib multimap konteyneri ustida amallar bajaring;
8. Iteratorlardan foydalanib vector konteyneri ustida amallar bajaring;
9. Iteratorlardan foydalanib map konteyneri ustida amallar bajaring;
10. Iteratorlardan foydalanib deque konteyneri ustida amallar bajaring
Yüklə 498,4 Kb.

Dostları ilə paylaş:




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

    Ana səhifə