Dasturlash II
Laboratoriya ishi №:6 Konteyner sinflari
Download 297.3 Kb.
|
Дастурлаш 2 Лаборатория иши 2021 (4)
Laboratoriya ishi №:6 Konteyner sinflari.Ishning maqsadi:. Kerakli jixoz va vositalar: kompyuter, video proyektor Nazariy ma’lumot. Konteyner sinflari Hozirgacha eng ko'p ishlatiladigan STL funksionalligi konteyner sinflari (yoki ular "konteynerlar" deb ham ataladi). STL turli vaziyatlarda ishlatilishi mumkin bo'lgan juda ko'p turli xil konteyner sinflarini o'z ichiga oladi. Umuman olganda, STL konteynerlari uchta asosiy toifaga bo'linadi: ketma-ket; assotsiativ; adapterlar. Ketma-ket konteynerlar Ketma-ket konteynerlar (yoki "ketma-ket konteynerlar") elementlari ketma-ket joylashgan konteyner sinflari. Ularning o'ziga xos xususiyati shundaki, siz elementingizni konteynerning istalgan joyiga qo'shishingiz mumkin. Ketma-ket konteynerning eng keng tarqalgan namunasi massivdir: massivga 4 ta element qo'shganda, bu elementlar siz qo'shganingizdek aniq tartibda (massivda) paydo bo'ladi. C ++ 11 dan boshlab, STL 6 ta ketma-ketlik konteynerlarini o'z ichiga oladi: std :: vektor; std :: deque; std :: massiv; std :: ro'yxat; std :: forward_list; std :: basic_string. Vektor sinfi (yoki oddiygina "vektor") dinamik massiv bo'lib, uning barcha elementlarini o'z ichiga olishi uchun kerak bo'lganda o'sadi. Vektor klassi [] indekslash operatori orqali o'z elementlariga o'zboshimchalik bilan kirish imkonini beradi, shuningdek, elementlarni qo'shish va olib tashlashni qo'llab-quvvatlaydi. Quyidagi dasturda vektorga 5 ta butun son qo'shamiz va ularni keyinchalik ko'rsatish uchun kirish uchun haddan tashqari yuklangan indekslash operatoridan [] foydalanamiz: bitta 2 3 4 5 6 7 sakkiz 9 10 11 #include #o'z ichiga int main () { std :: vektor uchun (int count = 0; count <5; ++ count) vect.push_back (10 - hisoblash); // massiv oxiriga raqamlar qo'shing uchun (int indeks = 0; indeks std :: cout << '\ n'; } Dasturni bajarish natijasi: 10 9 8 7 6 Deque (yoki oddiygina "deque") klassi dinamik massiv sifatida amalga oshirilgan deque bo'lib, u har ikki tomondan ham o'sishi mumkin. Masalan: bitta 2 3 4 5 6 7 sakkiz 9 10 o'n bir 12 o'n uch 14 15 o'n olti 17 #include #o'z ichiga int main () { std :: deque uchun (int count = 0; count <4; ++ count) { deq.push_back (hisoblash); // massiv oxiriga raqamlarni kiriting deq.push_front (10 - hisoblash); // massiv boshiga raqamlarni kiriting } uchun (int indeks = 0; indeks std :: cout << '\ n'; } Dasturni bajarish natijasi: 7 8 9 10 0 1 2 3 Roʻyxat (yoki oddiygina “roʻyxat”) ikki tomonlama bogʻlangan roʻyxat boʻlib, uning har bir elementi 2 ta koʻrsatkichdan iborat: biri roʻyxatning keyingi elementiga, ikkinchisi esa roʻyxatning oldingi elementiga ishora qiladi. ro'yxat faqat ro'yxatning boshi va oxiriga kirishni ta'minlaydi - tasodifiy kirish taqiqlanadi. Agar siz o'rtadagi biror qiymatni topmoqchi bo'lsangiz, unda siz izlayotgan narsani topmaguningizcha, bir chetidan boshlashingiz va ro'yxatning har bir elementini takrorlashingiz kerak. Ikki marta bog'langan ro'yxatning afzalligi shundaki, agar siz qaerga qo'shmoqchi bo'lsangiz, narsalarni qo'shish juda tezdir. Odatda, iteratorlar ikki marta bog'langan ro'yxat elementlarini takrorlash uchun ishlatiladi. Garchi string (va wstring) klassi odatda ketma-ket konteyner sifatida aytilmasa ham, aslida u char (yoki wchar) tipidagi elementlarga ega vektor sifatida ko'rib chiqilishi mumkin. Assotsiativ konteynerlar Assotsiativ konteynerlar konteyner sinflari bo'lib, ularning barcha elementlarini (jumladan, siz qo'shganlarni) avtomatik ravishda saralaydi. Odatiy bo'lib, assotsiativ konteynerlar elementlarni multiset - bu to'plam, lekin takroriy elementlarga ruxsat beriladi. map (yoki "assotsiativ massiv") har bir element kalit-qiymat juftligi bo'lgan to'plamdir. "Kalit" ma'lumotlarni saralash va indekslash uchun ishlatiladi va noyob bo'lishi kerak. Va "qiymat" - haqiqiy ma'lumotlar. multimap (yoki "lug'at") - takroriy kalitlarga ruxsat beruvchi xarita. Barcha kalitlar o'sish tartibida tartiblangan va siz qiymatni kalit bo'yicha ko'rishingiz mumkin. Adapterlar Adapterlar - bu muayyan vazifalar uchun mo'ljallangan maxsus, oldindan belgilangan konteyner sinflari. Qiziqarli tomoni shundaki, siz adapter qaysi seriyali konteynerdan foydalanishi kerakligini tanlashingiz mumkin. stack - bu konteyner klassi, uning elementlari LIFO printsipi bo'yicha ishlaydi (inglizcha "Last In, First Out" = "Last In, First Out"), ya'ni. elementlar idishning oxiriga qo'shiladi (olib keladi) va u erdan (idishning oxiridan) chiqariladi (itariladi). Odatda steklar odatiy ketma-ket konteyner sifatida deque dan foydalanadi (bu biroz g'alati, chunki vektor yaxshiroq variant bo'lar edi), lekin siz vektor yoki ro'yxatni ham ishlatishingiz mumkin. navbat (navbat Download 297.3 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling