Mavzu: STL komponentalar va konteynerlar bilan tanishish. Shablonlar standar kutubvonasining tuzilishi
Variant №13
Ishning maqsadi: Talabalar berilgan tuzilmaning shakliga qarab STL komponentlar va konteynerlarni qo’llashni o’rganishi va shablonlar standart kutubxonasining tuzilishini o’rganish.
Amaliy qism: Yoqilg’i quyish shahobchasida mashinalar navbati to’g’risidagi ma’lumotlarni yozib olish uchun deque shablonidan foydalaning.
Naziriy qism:
Deyarli barcha zamonaviy C ++ kompilyatorlarida STL kutubxonasi mavjud. Dastlab, deyarli har qanday ma'lumotlar bilan ishlash uchun tuzilgan, bu funktsiyalar va sinflar shablonlari to'plami bilan ta'minlanadi.
STL tarkibini to'rtta asosiy tarkibiy qismlar tashkil etadi:
iteratorlar - algoritmlarni konteyner ma'lumotlari bo'yicha harakatlanishiga imkon beradigan maxsus ko'rsatgichlar;
algoritmlar - hisoblash protseduralari;
konteynerlar - ma'lumotlarni saqlash, boshqarish va joylashtirish bloklari;
funktsional ob'yektlar - ob'ekt tarkibidagi funktsiyalarni boshqa tarkibiy qismlar tomonidan ishlatish uchun.
Qaytaruvchilar:
Iterator - bu umumlashtirilgan ko'rsatkich. Oddiy C ++ til ko'rsatkichlari bu turli xil ma'lumotlar tuzilmalari va turlari bilan universal ishlashga imkon beradigan iteratorlarning maxsus holati. Har qanday algoritm (universal hisoblash protsedurasi), iteratorlarni parametr sifatida qabul qilganda, uzatilayotgan iteratorlarni qayta ishlashda ularga taalluqli ma'lumotlar turi to'g'risida o'ylamaydi.
Iterator besh shaklda bo'ladi:
kirish (input).
chiqish (output).
bir tomonlama (forward).
ikki tomonlama (bidirectional).
tasodifiy kirish (random access).
Algoritmlar.
STL kutubxonasida qidirish, konvertatsiya qilish, saralash, nusxalash va hk kabi ba'zi bir standart harakatlarni bajaradigan funktsiyalar guruhi mavjud, ular algoritmlar deb ataladi. Algoritmlar uchun parametrlar, qoida tariqasida, iteratorlardir. Algoritm unga berilgan iterator turiga ahamiyat bermaydi. Asosiysi shundaki, ikkinchisi ma'lum bir toifaga kiradi. Masalan, agar algoritm parametri bir yo'nalishli iterator bo'lishi kerak bo'lsa, u holda almashtiriladigan iterator bitta yo'naltirilgan yoki ikki yo'naltirilgan yoki tasodifiy kirish iteratori bo'lishi kerak.
vector - tasodifiy kirishga ega bo'lgan massiv, zanjirning oxiriga ketma-ket ma'lumotlarni qo'shish kerak bo'lganda ko'pincha foydalaniladi.
list - vektorga o'xshash, ammo zanjirning biron bir joyida ma'lumotlarni qo'shish va o'chirishda samarali.
deque - boshida yoki oxirida ma'lumotlarni kiritish uchun qulay bo'lgan idish.
set - ma'lum bir tartibda tartiblangan noyob elementlar to'plami.
multiset - to'plam bilan bir xil, ammo ularning nusxalari bo'lishi mumkin.
map - tugmachalar orqali qiymatlarga kirishni ta'minlaydi.
multimap - xarita bilan bir xil, ammo takroriy kalitlarga ruxsat berish.
stack - ma'lumotlar bitta tartibda qo'shiladi va aksincha olinadi.
queue - ma'lumotlar qo'shiladi va shu tartibda chiqariladi.
priority queue - navbat bilan bir xil, ammo ma'lumotni ustuvorligi bo'yicha saralashi mumkin.
Funktsional ob'ektlar barchasi arifmetik operatorlardir: qo'shish (qo'shish), ayirish (qo'shish), ko'paytirish (marta), bo'linish (bo'linish), qolgan qismini (modul) olish va belgini teskari (negate). Tenglikni (teng_to), tengsizlikni (teng bo'lmagan_to), operatsiyalar "ko'proq" (katta), "kamroq" (kamroq), "ko'proq yoki teng" (katta) . Mantiqiy operatorlar o'zlarining funktsional ob'ektlariga ega: mantiqiy "va" (mantiqiy_ va), mantiqiy "yoki" (mantiqiy_or) va mantiqiy "emas" (mantiqiy_not).
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.
Dastrur kodi:
#include
#include
using namespace std;
template
void navbat(deque list[], int listSize)
{
for (int i = 0; i < listSize; i++)
{
cout< }
}
int main()
{ int n;
cin>>n;
string a[n];
for (int i = 0; i < n; i++) {
cin>>a[i];
}
navbat(a,n);
return 0;
}
Dastur natijasi:
Xulosa
Dars mobaynida avvalgi bilimlarimizni mustahkamladik. Bilmagan ba’zi savollarga javob oldik. Ma’lumotlar tuzilmasi va algoritmi fani asosan dasturlashgacha bo’lgan jarayonni chuqurroq o’rganar ekan.
Do'stlaringiz bilan baham: |