Fan nomi: Algoritmik tillar va dasturlash Mavzu Konteynerli tiplar va ularning qo’llanilishi
Download 0.7 Mb.
|
vazifa
Fan nomi:Algoritmik tillar va dasturlash Mavzu Konteynerli tiplar va ularning qo’llanilishi .21_15 guruh talabasi Aliqulov UmidjonReja 1.Kirish. 2.Konteyner sinflar. 3. Konteyner sinflarning turlari. 4.Massiv konteyner sinfi. 5.Xulosa.Kirish Haqiqiy hayotda biz doimo konteynerlardan foydalanamiz. Muqovali va bog'langan kitob sahifalari, tungi stol , ryukzakdagi narsalar va boshqalar. Ushbu idishlarsiz ichidagi narsalar bilan ishlash juda noqulay bo'lar edi. Tasavvur qiling-a, muqovasi yoki qopqog'i bo'lmagan kitobni o'qish yoki oziq-ovqat idishi , piyola , plastinka va hokazolardan foydalanmasdan grechkani qo’l bilan yeyishga harakat qiling. Tartibsizlik! Konteynerlarning ahamiyati shundaki, ular obyektlarni to'g'ri tartibga solish va saqlashga yordam beradi.Konteyner sinflari. C++da konteyner sinfi maʼlum bir maʼlumot turidagi (foydalanuvchi tomonidan belgilangan yoki fundamental) bir nechta obyektlarni saqlash va tartibga solish uchun sinfdir. Ko'p turli xil konteyner sinflari mavjud, ularning har biri o'zining afzalliklari, kamchiliklari yoki foydalanish cheklovlariga ega. Hozirgacha dasturlashda eng ko'p qo'llaniladigan konteyner bu massiv bo'lib, biz allaqachon ko'plab misollarda foydalanganmiz.Garchi C++ standart oddiy massivlarga ega bo'lsa-da, ko'pchilik dasturchilar array yoki vector kabi konteyner massivlaridan foydalanadilar, chunki ular taqdim etadigan imtiyozlar juda ko’pdir. Standart massivlardan farqli o'laroq, konteyner massivi sinflari elementlar qo'shilgan yoki olib tashlanganida o'z hajmini dinamik ravishda o'zgartirish imkoniyatiga ega. Bu ularni oddiy massivlarga qaraganda qulayroq qilibgina qolmay, balki xavfsizroq qiladi.Odatda, C ++ konteyner sinflarining funksionalligi quyidagicha: - Bo'sh konteynerni yaratish (konstruktor orqali). - Konteynerga yangi obyekt qo'shish. - Obyektni konteynerdan olib tashlash. - Hozirgi vaqtda konteynerdagi obyektlar sonini ko'ring. - Konteynerni barcha obyektlardan tozalash. - Saqlangan obyektlarga kirish. - Obyektlarni/elementlarni saralash (har doim ham emas). Ba'zan konteyner sinflarining funksionalligi yuqorida ko'rsatilgandek keng bo'lmasligi mumkin. Masalan, konteyner massivlari sinflari ko'pincha ob'ektlarni qo'shish / o'chirish funksiyasiga ega emas, chunki ular allaqachon sekin va ishlab chiquvchi shunchaki yukni oshirishni xohlamaydi.Konteyner sinflaridagi munosabatlar turi "bir narsaning a'zosi" dir. Masalan, massivning elementlari massivning “a’zolari”dir (uga tegishli). E'tibor bering, biz bu yerda "biror narsaning a'zosi" atamasini C++ sinfining a'zosi ma'nosida ishlatmaymiz.Konteyner sinflarining turlari. Konteyner sinflari odatda ikki xil bo'ladi: 1- Qiymatli konteynerlar – bu obyektlarning nusxalarini saqlaydigan kompozitsiyalar (va shuning uchun bu nusxalarni yaratish / yo'q qilish uchun javobgardir). 2- Havola konteynerlari – boshqa obyektlarga ko'rsatgichlar yoki havolalarni saqlaydigan agregatsiyadir(shuning uchun bu ob'ektlarni yaratish/yo'q qilish uchun javobgar emas).Massiv konteyner sinfi. Endi biz C++ tilida konteynerlar funksiyasini amalga oshirgan holda noldan butun sonli massiv sinfini yozamiz. Ushbu massiv klassi elementlarning o'zi emas, balki ularning nusxalarini saqlaydigan qiymat konteyneri turiga kiradi. Birinchidan, ArrayInt.h faylini yaratamiz: #ifndef ARRAYINT_H #define ARRAYINT_H class ArrayInt { }; #endBizning ArrayInt ikkita qiymatni kuzatishi kerak: ma'lumotlar va uning uzunligi. Biz massivimiz uzunligini o‘zgartirish imkoniyatiga ega bo‘lishini xohlayotganimiz uchun biz dinamik xotira ajratishdan foydalanishimiz kerak, ya’ni ma’lumotlarni saqlash uchun ko‘rsatgichdan foydalanamiz: #ifndef ARRAYINT_H #define ARRAYINT_H class ArrayInt { private: int m_length; int *m_data; }; #endifEndi biz ArrayInt sinfi obyektlarini yaratish imkoniyatiga ega bo'lish uchun konstruktorlarni qo'shishimiz kerak. Biz ikkita konstruktorni qo'shamiz: birinchisi bo'sh massivni yaratadi, ikkinchisi berilgan o'lchamdagi massivni yaratadi: #ifndef ARRAYINT_H #define ARRAYINT_H #include |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling