STL kutubxonalari. Kontеynеr sinflar, kontеynеrlar (kollеksiyalar).
Chiziqli konteynerlar. Assosiativ kontеynеrlar.
Tartiblanmagan assosiativ kontеynеrlar Ishning maqsadi: C++ dasturlash tilida STL kutubxonalari, konteynerlar va konteyner sinflaridan foydalanish ko‘nikmalarini shakllantirish.
Nazariy qism STL kutubxonalari STL – (Standart Template Library) C++ dasturlash tilida turli xil ma’lumotlar tuzilmalari va funksiyalari ya’ni ro’yxatlar, steklar va massivlar kabi tuzilmalar bilan ishlash uchun qulay hisoblanadigan shablon sinflar to’plamidir. STL – konteyner sinflar kutubxonasi, algoritmlar va iteratorlardan iborat.
STL tarkibi 4 ta asosiy komponentga ega:
Algoritmlar
Konteynerlar
Funksiyalar
Iteratorlar
Algoritmlar - elementlar diapazonlarida foydalanish uchun mo'ljallangan funksiyalar to'plamini belgilaydi. Ular konteynerlarda ishlaydi va konteynerlar mazmuni uchun turli operatsiyalarni bajaradi hamda ular turli xildagi vositalarni taqdim etadi.
Konteynerlar – turli xil tuzilmalar ob'ektlari va ma'lumotlarini saqlaydi. M-n: massiv, stek, navbat, ro’yxat, to’plam va h-k.
Funksiyalar - STL funksiya chaqiruv operatorini qayta yuklaydigan sinflarni o'z ichiga oladi. Bunday sinflarning misollari funksiya ob'ektlari yoki funktorlar deb ataladi. Funktorlar yuboriladigan parametrlar yordamida bog'langan funktsiyaning ishlashini moslashtirishga imkon beradi.
Iteratorlar - qiymatlar ketma-ketligi ustida ishlash uchun ishlatiladi. Ular STLda umumiylikka imkon beruvchi asosiy xususiyatdir. Iteratorlar bilan ko‘rsatkichlar kabi ishlash mumkin. Ularga *, inkrement, dekrement operatorlarni qo‘llash mumkin. Iterator tipi sifatida xar xil konteynerlarda aniqlangan iterator tip elon qilinadi.
Kontеynеr sinflar Konteyner sinflar ular sinf shablonlari sifatida amalga oshiriladi, bu elementlar sifatida qo'llab-quvvatlanadigan turlarda katta moslashuvchanlikni ta'minlaydi.
Konteyner o'z elementlari uchun saqlash joyini boshqaradi va ularga to'g'ridan-to'g'ri yoki iteratorlar (ko'rsatkichlarga o'xshash xususiyatlarga ega bo'lgan mos yozuvlar) orqali kirish uchun a'zo funktsiyalarini ta'minlaydi. Konteynerlar quyidagi turlari mavjud.
Chiziqli (ketma-ket) konteynerlar: ketma-ket kirish mumkin bo'lgan ma'lumotlar tuzilmalarini amalga oshirishga imkon beradi. Ketma-ket konteynerlarga quyidagilar kiradi:
vector (vektor)
list (ro’yxat)
deque (dek)
arrays (massiv)
forward list (yo’naltirilgan ro’yxat)
Konteyner adapterlar: ketma ketligi turlicha bo’lgan tuzilmalardan iborat ketma-ket konteynerlardir. Ular quyidagilar:
queue (navbat)
priority_queue (ustuvor navbat)
stack (stek)
Assotsiativ konteynerlar: tezda qidirilishi mumkin bo'lgan tartiblangan ma'lumotlar tuzilmalarini amalga oshirishga imkon beradi. (murakkabligi O(log n)). Assotsiativ konteynerlar quyidagilardir:
Tartiblanmagan assotsiativ konteynerlar: tezda qidirilishi mumkin bo'lgan tartibsiz ma'lumotlar tuzilmalarini amalga oshiradi:
unordered set (tartiblanmagan to’plam)
unordered multiset
unordered map
unordered multimap
2.1. Chiziqli konteynerlar vector konteyner sinfidan foydalanib, amaliy dasturlar yaratish Ishning maqsadi: C++ dasturlash tilida vecot sinflaridan foydalanib, konteynernerlardan foydalanish ko‘nikmalarini shakllantirish.
Masalaning qo‘yilishi: vector asosida yaratilgan to‘plam elementlarini vectorning maxsus funksiyalari yordamida qayta ishlash.
13-masala: Avtomobillar haqida (nomi, yili, versiyasi va narxi) to‘plam berilgan. Avtomobillarni nomi, yili, versiyasi va narxi bo‘yicha qidiruvchi hamda topilgan natijani faylga saqlashni taklif qiladigan dastur tuzing.
Dastur matni: