Tiplarni dinamik tarzda
Download 1.83 Mb.
|
Tiplarni dinamik tarzda
multimap – map, juftlikda kalitlar unikal emas, takrorlanadigan to‘plam. Agar kalit bo‘yicha qidirsangiz, siz bitta qiymatni emas, balki bir xil kalit qiymatiga ega bo‘lgan elementlar to‘plamini olasiz. Dasturga ulanish uslubi:
multiset – set, juftlikda kalitlar unikal emas, takrorlanadigan to‘plam. Agar kalit bo‘yicha qidirsangiz, siz bitta qiymatni emas, balki bir xil kalit qiymatiga ega bo‘lgan elementlar to‘plamini olasiz. Dasturga ulanish uslubi:
Belgilar to‘plami bo‘lgan satr (qator)ni ham to‘plam sifatida qarash mumkin. Shuning uchun ixtiyoriy kutubxona satrlar bilan ishlash va ifodalash uchun o‘zining sinflarga ega. STLda satrlar ASCII va Unicode formatlarida ifodalanadi. string — to‘plam, ASCII formatidagi bir baytli belgilar to‘plami; wstring — to‘plam, Unicode formatidagi ikki baytli belgilar to‘plami; Dasturga ulanish uslubi:
Shuningdek, belgilar to‘plami bo‘lgan, satrli oqimlarni ham to‘plam sifatida qarash mumkin. strstream-oddiy maʻlumotlar tiplarini STL-string ko‘rinishada saqlashni tashkil qilish uchun ishlatiladi. Dasturga ulanish uslubi:
Dasturlarni tahlil qilishni shu sinfdan boshlaymiz. 2.1-dastur. Satrli oqim to‘plam sifatida ishlatish
Satrli oqim - oqim oxirida bir null terminator bilan tugaydigan buferdir. Shuning uchun uning bo‘sh qolgan elemetlari ixtiyoriy belgi bilan to‘ldiriladi. Satrli oqimning haqiqiy qismini olish uchun pcount() elementlarni sanagichidan foydalanish mumkin. Keyin esa, satrli oqimning "haqiqiy qismi" olinadi va chop qilinadi. Iteratorlar ham dinamik strukturaga ega to‘plamdir. Iterator dinamik maʻlumotlar tuzilmalarini amalga oshirishda juda muhim tushunchadir. Tushunishimiz uchun, iteratorni maʻlum bir cheklovlar bilan bir ko‘rsatkich sifatida abstrakt ko‘rinishda aniqlash mumkin. Sirasini aytganda, iterator umumiy tushuncha bo‘lib va bir ko‘rsatkich uchun obʻyekt to‘plami bo‘ladi, ammo ko‘rsatkich bu iterator emas. Iterator sinfini quyidagicha qurib olish mumkin: 2.2-dastur. Iteratorning sinfni qurish.
Iteratorning baʻzi bir formallashtirilgan taʻriflari: Iteratorlar to‘plam elementlariga kirishni taʻminlaydi. Har bir aniq STL sinfi uchun iteratorlar to‘plamda sinf ichida alohida aniqlanadi. Iteratorlarning uch turi mavjud: (forward) iterator - to‘plamni kichik indeksdan kattaroq indeksga o‘tkazish uchun; reverse iterator - to‘plamni katta indeksdan kichikroq indeksli o‘tkazish uchun; random access iterator - to‘plamdan tasofidiy, har qanday yo‘nalishda tanlash uchun. To‘plamning yarim elementlarini o‘chirishga doir misol keltiramiz. 2.3-dastur. To‘plamning yarim elementlarini o‘chirish.
2.3-dasturdagi baʻzi funksiyalarni keyinroq tushuntirib o‘tamiz. Shuni ham tushunish kerakki, to‘plamning qandaydir elementi uchun iterator olishda to‘plamni ketma-ket o‘zgartirish iteratorni yaroqsiz holga keltirish mumkin. Iteratorning iteratsiyasida oldinga va shunga o‘xshash orqaga o‘tish quyidagicha fragmenti asosida sodir bo‘ladi:
Tasodifiy tanlash iteratoridan foydalanganda, masalan, quyidagicha fragmentni yozish mumkin:
Barcha to‘plamlarda mavjud bo‘lgan asosiy usullar quyidagi 2.1-jadvalga keltiramiz. 2.1-jadval. To‘plam usullari.
To‘plamning sig‘imi (hajmi), boshida aytib o‘tilganidek, kerak bo‘lganda o‘zgaradi, yaʻni, agar to‘plam uchun ajratilgan barcha xotiralar to‘lgan bo‘lsa, unda yangi element qo‘shilganda, to‘plamning sig‘imi oshiriladi va o‘sishdan oldin undagi barcha qiymatlar yangi xotira maydoniga ko‘chiriladi - bu dasturchilar uchun juda qimmat amal bo‘lib hisoblanadi. Dasturlashda to’plamning hajmi va quvvati ishonch hosil qilish muhim dasturlash element hisoblanadi. To‘plamning sig‘imi turlicha ekanligiga ishonch hosil qilish uchun quyidagi dasturni keltiramiz. 2.4-dastur. To‘plamning sig‘imini tekshirish.
vector – eng ko‘p ishlatiladigan to‘plam vektor hisoblanadi. Bu to‘plamning operator[] operatoriga ega ekanligi juda qulay. Odatiy massiv kabi ishlatiladi. Xuddi shuningdek, bu operator map, deque, string i wstring to‘plamlariga ham mavjud. Vektorning quvvati dinamik ravishda o‘zgarishini tushunish muhimdir. Odatda, multiplikativ yondashuv hajmini oshirish uchun ishlatiladi: zarur bo‘lsa, vektor uchun ajratilgan xotiraning marta soni ortadi, yaʻni, yangi element qo‘shib to‘plam sig‘imining oshirishga sabab bo‘lsa, operatsion tizimi dasturi uchun yangi xotira maydoni ajratadi. Masalan, ikki barobar katta bo‘lish uchun, eski xotira maydoni barcha elementlari nusxasi yangi qiymat qilib qo‘shish. Download 1.83 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling