XORAZM – 2023 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:
- set (to’plam) - multiset - map - multimap 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
Masala: Berilgan float turidagi to’plam qiymatlarining yaxlitlab(o’zidan katta yoki teng bo’lgan butun songacha yaxlitlab) 2- to’plamga, ikki to’plam
ayirmasini(3=1-2) 3- to’plamga joylashtiruvchi va ularni ekranga chiqaruvchi dastur tuzing.
#include
#include #include
using namespace std ;
int main()
{
set s1={23, 76.4, 34, 23.1, 90} ;
set s2 ;
set s3 ;
int k ;
cout << "s1 to'plam elementlari : " ;
for(auto i : s1)
{
cout << i << " " ;
}
cout << endl ;
for(auto i : s1)
{
k = static_cast (i) ;
if (i==k)
{
s2.insert(i) ;
s3.insert(i-k) ;
}
if (k{
s2.insert(k+1) ;
s3.insert(k+1-i) ;
}
}
cout << "s2 to'plam elementlari : " ;
for(auto i : s2)
{
cout << i << " " ;
}
cout << endl ;
cout << "s3 to'plam elementlari " ;
cout << "(bu yerda s3 set() bo'lganligi uchun takroriy elementlar tashlab ketilgan) : " ;
for(auto i : s3)
{
cout << i << " " ;
}
cout << endl ;
return 0 ;
}
Natija