Mavzu: Kantenerlar bilan ishlash Konteynerlar


Mavzu: Iteratorlar bilan ishlash va turlari


Download 173.5 Kb.
bet4/12
Sana21.06.2023
Hajmi173.5 Kb.
#1640460
1   2   3   4   5   6   7   8   9   ...   12
Bog'liq
Mavzu abbos

Mavzu: Iteratorlar bilan ishlash va turlari



Avvalo funksiya shablonlari bu umumiy turlar bilan ishlash mumkin bo’lgan funksiyalardir.Shablon C++ tilida oddiy va shu bilan birga juda kuchli vositadir.Oddiy g'oya ma'lumotlar turini parametr sifatida o'tkazishdir, shunda biz turli xil ma'lumotlar turlari uchun bir xil kodni yozishimiz shart emas.Masalan, dasturiy ta'minot kompaniyasiga turli xil ma'lumotlar turlari uchun sort() kerak bo'lishi mumkin.Bir nechta kodlarni yozish va saqlash o'rniga, biz bitta sort() yozishimiz va ma'lumotlar turini parametr sifatida o'tkazishimiz mumkin.C++ shablonlarni qo'llab-quvvatlash uchun ikkita yangi kalit so'zni qo'shadi: "template" va "typename". Ikkinchi kalit so'z har doim "class" kalit so'zi bilan almashtirilishi mumkin.
Shablonlar qanday ishlaydi?
Shablonlar kompilyator vaqtida kengaytiriladi. Bu makrolarga o'xshaydi.
Farqi shundaki, kompilyator shablonni kengaytirishdan oldin turini tekshiradi.
G'oya oddiy, manba kodi faqat funksiya/sinfni o'z ichiga oladi, lekin tuzilgan kodda bir xil funktsiya/sinfning bir nechta nusxalari bo'lishi mumkin.
Funktsiya shablonlari.Biz har xil ma'lumotlar turlari uchun ishlatilishi mumkin bo'lgan umumiy funktsiyani yozamiz. Funktsiya shablonlariga misollar: sort(), max(), min(), printArray().
max() - funksiyasi

sort() –funksiyasi


Sinf shablonlari.Funktsiya shablonlari kabi sinf shablonlari sinf ma'lumotlar turidan mustaqil bo'lgan narsani aniqlaganda foydali bo'ladi. LinkedList, BinaryTree, Stack, Queue, Array va boshqalar kabi sinflar uchun foydali bo'lishi mumkin.
Quyida Array shablonlari sinfining oddiy misoli keltirilgan.


Shablonlarga bir nechta argumentlar bo'lishi mumkinmi?
Ha, oddiy parametrlar singari, shablonlarga argument sifatida bir nechta ma'lumotlar turlarini o'tkazishimiz mumkin. Quyidagi misol buni ko'rsatadi


Shablon argumentlari uchun standart qiymatni belgilashimiz mumkinmi?
Ha, oddiy parametrlar singari, shablonlarga standart argumentlarni ham belgilashimiz mumkin. Quyidagi misol buni ko'rsatadi.

STL ya'niy The Standart Template Library umumiy dasturlash maʼlumotlar tuzilmalari va roʻyxatlar, steklar, massivlar va boshqalar kabi funksiyalarni taʼminlash uchun C++ shablon sinflari toʻplamidir. Bu konteyner sinflari, algoritmlar va iteratorlar kutubxonasi. Bu umumlashtirilgan kutubxona va shuning uchun uning tarkibiy qismlari parametrlangan. Shablon sinflari bo'yicha ishchi bilim STL bilan ishlash uchun zaruriy shartdir.
Saralash Algoritmlar.Sarlavha algoritmi, ayniqsa, elementlar diapazonlarida foydalanish uchun mo'ljallangan funksiyalar to'plamini belgilaydi. Ular konteynerlarda ishlaydi va konteynerlar mazmuni uchun turli operatsiyalar uchun vositalarni taqdim etadi.
Masalan: sort()
ma'lumotlarga qo'llaniladigan eng asosiy funktsiyalardan biridir. Bu ma'lumotlarning ko'payishi yoki kamayishi mumkin bo'lgan ma'lum bir tarzda tartibga solinishini anglatadi. C++ STL da sort() nomi bilan o'rnatilgan funksiya mavjud.
Bu funksiya IntroSort-dan ichki foydalanadi. Batafsilroq u QuickSort, HeapSort va InsertionSort gibridlari yordamida amalga oshiriladi. Odatiy bo'lib, u QuickSort-dan foydalanadi, lekin agar QuickSort nohaq qismlarga bo'linsa va N*logN vaqtdan ko'proq vaqt talab qilsa, u HeapSort-ga o'tadi va massiv o'lchami juda kichik bo'lganda, u InsertionSort rejimiga o'tadi


Download 173.5 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   ...   12




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