Tiplarni dinamik tarzda
Download 1.83 Mb.
|
Tiplarni dinamik tarzda
- Bu sahifa navigatsiya:
- - iter2
- Xotirani taqsimlovchilar va ularga qo‘yilgan talablar.
Teskari iteratorlar. Bu iteratorlar konteynerning elementlarini teskari olishni amalga oshiradi. Buning uchun reverse_iterator tipi ishlatiladi. Bu tipdagi iteratorlarga konteynerning elementlarini olish uchun rbegin() i rend() funksiyalaridan foydalaniladi.
Agar konteynerni o‘zgartirishdan himoyaya qilish va teskarisi kerak bo‘lsa, const_reverse_iterator tipidagi iteratordan va uning crbegin() va crend() funksiyalaridan foydalanish maqsadga muvofiqdir. Yuqoridagi dasturga quyidagi fragmentni yozish yetarli bo‘ladi.
Shuningdek iteratorlari qo‘shima amallarga ham ega (list va forward_list konteynerlaridan tashqari): iter + n - n ta pozitsiya keyingi elementni ko‘rsatuvchi iteratorni qaytaradi. iter – n - n ta pozitsiya oldingi elementni ko‘rsatuvchi iteratorni qaytaradi. iter += n - iteratorni n - chi pozitsiyaga o‘tkazadi iter -= n - iteratorni n - chi pozitsiyaga o‘tkazadi iter1 - iter2 - iter1 va iter2 lar orasidagi pozitsiyalar sonini qaytaradi [>], [>=], [<], [<=] - taqqoslash amallari. Agar iterator oxiriga yaqin elementni ko‘rsatsa boshqasidan katta. 5.9-dastur. Iteratorning qo‘shimcha amallaridan foydalanish.
Taqqoslash amallari uchun ko‘chirib o‘tish iteratorlari va bazaviy iteratorlar uchun baʻzi C++ dasturlashda farqlari bor. 5.1-jadval. Taqqoslash amallari yozish uslublari.
Xotirani taqsimlovchilar va ularga qo‘yilgan talablar. Dinamik xotira bilan ishlashda maxsus truklarni, fragmentlardan foydalanish bo‘lmasa, ko‘pigina algoritmlardan foydalanish samarasiz bo‘lshi mumkin. Bunga misol sifatida ikkita holatni ko‘rib chiqamiz. new va delete operatorlarining qayta aniqlanib yuklanishida sintaktik konstruktorlar kichikroq bo‘ladi va dastur lokalizatsiya qilish oddiy bo‘ladi. Shuningdek protsessordagi amallar tizimida ham qayta aniqlash sodir bo‘ladi. Avvalo, xotirani ishlashini tezlashtirishda aqlli allocator qanchalik foydasi borligini aniqlash lozim. Buning uchun oddiy test misollarini (C++ va S#) tillarida ko‘rib chiqaylik ( bu xotira bilan ishlash uchun yaxshi menejer hisoblanadi va obʻyektlarni avlodlarga ajratadi, turli o‘lchamdagi obʻyektlar uchun turli pullardan (joylar) foydalanadi).
Dasturlar sharsimon vakum usulini qo‘llab ham vaqt bo‘yicha solishtirilsa 10 barovar (62 ms va 650 ms) farq bo‘lmoqda. Shuningdek C# ishini tugutdi, ammo C++ da esa yaxshigini xotira ajratilan, bu hali o‘chirish kerak. 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