Mavzu: Kantenerlar bilan ishlash Konteynerlar


Download 173.5 Kb.
bet6/12
Sana21.06.2023
Hajmi173.5 Kb.
#1640460
1   2   3   4   5   6   7   8   9   ...   12
Bog'liq
Mavzu abbos

Iteratorlar.Nomidan ko'rinib turibdiki, iteratorlar qiymatlar ketma-ketligi ustida ishlash uchun ishlatiladi. Ular STLda umumiylikka imkon beruvchi asosiy xususiyatdir. Iteratorlar STL konteynerlarining xotira manzillariga ishora qilish uchun ishlatiladi. Ular birinchi navbatda raqamlar, belgilar va boshqalar ketma-ketlikda qo'llaniladi. Ular dasturning murakkabligi va bajarilish vaqtini qisqartiradi.
1. begin() - Bu funksiya konteynerning boshlanish holatini qaytarish uchun ishlatiladi. 2. end() - Bu funksiya konteynerning oxirgi holatini qaytarish uchun ishlatiladi.
// C++ code to demonstrate the working of // iterator, begin() and end() #include #include // for iterators #include // for vectors using namespace std; int main(){ vector ar = { 1, 2, 3, 4, 5 }; // Declaring iterator to a vector vector::iterator ptr; // Displaying vector elements using begin() and end() cout << "The vector elements are : "; for (ptr = ar.begin(); ptr < ar.end(); ptr++) cout << *ptr << " "; return 0; }
3. advance() - Bu funksiya iterator oʻrnini argumentlarida koʻrsatilgan raqamgacha oshirish uchun ishlatiladi.
4. next() - Bu funksiya iterator oʻz argumentlarida koʻrsatilgan pozitsiyalarni ilgari surgandan soʻng koʻrsatadigan yangi iteratorni qaytaradi.
5. prev() - Bu funksiya iterator o'z argumentlarida eslatib o'tilgan pozitsiyalarni kamaytirgandan keyin ko'rsatadigan yangi iteratorni qaytaradi.
6. inserter() :- Bu funksiya elementlarni konteynerning istalgan joyiga kiritish uchun ishlatiladi. U 2 ta argumentni, konteyner va iteratorni elementlarni kiritish kerak bo'lgan joyni qabul qiladi.
Std::find, std::equal, std::count kabi turli xil STL algoritmlarining shablon ta'rifini ko'rib chiqqandan so'ng, siz Input Iterator tipidagi ob'ektlardan iborat shablon ta'rifini topgan bo'lishingiz kerak. Xo'sh, ular nima va ular nima uchun ishlatiladi?
Input iteratorlari C++ standart kutubxonasida mavjud bo'lgan iteratorlarning beshta asosiy turidan biri bo'lib, boshqalari Chiqish iteratorlari, Oldinga iterator, Ikki yo'nalishli iterator va Tasodifiy kirish iteratorlaridir.
Input iteratorlari mavjud bo'lgan barcha iteratorlar orasida eng zaif va eng sodda deb hisoblanadi, ularning funksionalligi va ular yordamida nimaga erishish mumkin. Ular ketma-ket kiritish operatsiyalarida ishlatilishi mumkin bo'lgan iteratorlar bo'lib, bunda iterator tomonidan ko'rsatilgan har bir qiymat faqat bir marta o'qiladi va keyin iterator oshiriladi.

Std::copy, std::move, std::transform kabi turli xil STL algoritmlarining shablon ta'rifini ko'rib chiqqandan so'ng, siz Output Iterator tipidagi ob'ektlardan iborat shablon ta'rifini topgan bo'lishingiz kerak. Xo'sh, ular nima va ular nima uchun ishlatiladi? Output iteratorlari C++ standart kutubxonasida mavjud bo'lgan iteratorlarning beshta asosiy turidan biri bo'lib, boshqalari kirish iteratorlari, oldinga yo'naltiruvchi iteratorlar, ikki yo'nalishli iteratorlar va tasodifiy kirish iteratorlaridir.Output iteratorlari kiritish iteratorlarining teskari funksiyasini bajaradiganligi sababli, kirish takrorlovchilarining mutlaqo teskarisi hisoblanadi. Ularga qiymatlar ketma-ketlikda tayinlanishi mumkin, lekin qiymatlarga kirishning teskarisini bajaradigan va qiymatlarni belgilash mumkin bo'lmagan kirish iteratorlaridan farqli o'laroq, qiymatlarga kirish uchun foydalanilmaydi. Shunday qilib, input va ouput iteratorlari bir-birini to'ldiradi, deb aytishimiz mumkin.


Std::search, std::search_n, std::lower_bound kabi turli xil STL algoritmlarining shablon ta'rifini ko'rib chiqqandan so'ng, siz Forward Iterator tipidagi ob'ektlardan iborat shablon ta'rifini topgan bo'lishingiz kerak. Xo'sh, ular nima va ular nima uchun ishlatiladi? Forward iteratorlar C++ standart kutubxonasida mavjud boʻlgan iteratorlarning beshta asosiy turlaridan biri boʻlib, boshqalari kirish iteratorlarichiqish iteratorlari, ikki yoʻnalishli iteratorlar va tasodifiy kirish iteratorlaridir. Forward iteratorlar kirish va chiqish iteratorlarining kombinatsiyasi hisoblanadi. U ikkalasining funksionalligini qo'llab-quvvatlaydi. Bu qiymatlarga kirish va o'zgartirish imkonini beradi.
Std::reverse, std::next_permutation va std::reverse_copy kabi turli xil STL algoritmlarining shablon ta'rifini ko'rib chiqqandan so'ng, ularning ikki tomonlama iterator tipidagi ob'ektlardan iborat shablon ta'rifini topgan bo'lishingiz kerak. Xo'sh, ular nima va ular nima uchun ishlatiladi? Bidirectional iteratorlar C++ standart kutubxonasida mavjud boʻlgan iteratorlarning beshta asosiy turlaridan biri boʻlib, boshqalari kirish iteratorlari, chiqish iteratorlari, Forward iteratorlari va tasodifiy kirish iteratorlaridir.
Bidirectional iteratorlar - bu har ikki yo'nalishda (oxiriga va boshiga) diapazondagi elementlar ketma-ketligiga kirish uchun ishlatilishi mumkin bo'lgan iteratorlar. Ular oldinga iteratorlarga o'xshaydi, faqat oldinga yo'nalishda harakatlanishi mumkin bo'lgan oldinga iteratorlardan farqli o'laroq, ular orqaga yo'nalishda ham harakatlanishi mumkin.Shuni ta'kidlash kerakki, ro'yxat, xarita, multimap, to'plam va multiset kabi konteynerlar bidirectional iteratorlarni qo'llab-quvvatlaydi. Bu shuni anglatadiki, agar biz ular uchun oddiy iteratorlarni e'lon qilsak va ular vektorlar va deque holatlarida bo'lgani kabi, ular ikki tomonlama iteratorlar bo'ladi, ular tasodifiy kirish iteratorlaridi.

Xotirani taqsimlash - bu jarayonga (uning ko'rsatmalari va ma'lumotlari) jismoniy yoki virtual xotira manzil maydonini belgilash harakati. Xotirani taqsimlashning ikkita asosiy usuli statik va dinamik xotira ajratishdir. Statik xotira ajratish usuli xotirani jarayonga, uni bajarishdan oldin tayinlaydi. Boshqa tomondan, dinamik xotirani taqsimlash usuli xotirani jarayonga, uni bajarish vaqtida tayinlaydi. Ushbu bo'limda biz xotirani taqsimlash nima ekanligini, uning turlarini (statik va dinamik xotirani taqsimlash) va ularning afzalliklari va kamchiliklarini muhokama qilamiz. Shunday ekan, keling, boshlaylik.


Tarkib: Statik va dinamik xotirani ajratish


Xotirani taqsimlash
Xotirani taqsimlash turlari
Statik va dinamik xotirani taqsimlashning afzalliklari va kamchiliklari
Asosiy xulosalar
Xotirani taqsimlash Jarayonni bajarish uchun uni birinchi navbatda xotiraga joylashtirish kerak. Xotiradagi jarayonga joy ajratish xotirani ajratish deyiladi. Xotirani ajratish - bu bog'lanish atamasining umumiy jihati.Keling, misol yordamida bog'lanishni tushunamiz. Faraz qilaylik, dasturda atributlar to'plamiga ega ob'ekt mavjud. Endi ushbu ob'ektning o'zgaruvchisi ushbu atributlar to'plami uchun qiymatlarga ega bo'ladi. Ushbu qiymatlarni saqlash uchun biz ushbu atributlarga ajratilgan xotiraga ega bo'lishimiz kerak. Demak, o'zgaruvchining atributiga xotira manzilini belgilash akti xotirani ajratish deyiladi. Va qiymatlarni o'zgaruvchining atributlariga ko'rsatish/bog'lash harakati majburiy deb ataladi. Ushbu bog'lash amali dasturni bajarish jarayonida o'zgaruvchidan foydalanishdan oldin bajarilishi kerak.
Bizda xotirani ajratishning ikki turi mavjud yoki ikkita bog'lash usuli, statik va dinamik bog'lanishni aytishimiz mumkin.


Download 173.5 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   ...   12




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling