• Assotsiativ konteynerlar
  • Tiplarni dinamik tarzda




    Download 1,83 Mb.
    bet18/131
    Sana13.05.2024
    Hajmi1,83 Mb.
    #228405
    1   ...   14   15   16   17   18   19   20   21   ...   131
    Bog'liq
    Tiplarni dinamik tarzda

    Ketma-ket konteynerlar. Ular uzluksiz ketma-ketlikda o‘xshash miqdorlarning chekli sonini saqlashni taʻminlaydi. Konteynerlar sifatida vektor (vector), ikki tomonlama navbat (deque), ro‘yxat (list) va bir aloqali ro‘yxati (forward_list), shuningdek konteyner variantlar asosida adapterlar, stek (stack), navbat (queue) va ustuvorlik bilan navbat (priority_queue) sinflarini o‘z ichiga oladi. Massiv ham amallar bilan cheklangan holda konteynerning yana bir turidir.
    Konteynerning har bir turi maʻlumotlar ustida o‘z amallar to‘plamini taʻminlaydi. Siz tanlagan konteyner turi dasturdagi maʻlumotlar bilan nima qilishni xohlashingizga bog‘liq. Masalan, agar ketma-ketlik o‘rtasida maʻlumotlar tez - tez joylashtirish va o‘chirish kerak bo‘lsa, ro‘yxatlardan foydalanish kerak, maʻlumotlarni oxirida yoki boshida, birinchi navbatda joylatrish kerak bo‘lsa, ikki tomonlama navbatdan foydalanish maqsadga muvofiq.
    Assotsiativ konteynerlar. Assotsiativ konteynerlar asosiy maʻlumotlarga kalitlar asosida tezkor murojaat qilishni taʻminlaydi. Bu konteynerlar muvozanatli daraxtlarga asoslangan. Assotsiativ konteynerlarning besh turi mavjud: lug‘atlar (map), ko‘p lug‘atlar (multi) (multimap), to‘plamlar (set), multi to‘plamlar (multiset) va bitli to‘plam (bitset).
    Dasturchi standart kutubxonada mavjud bo‘lgan sinflarga asoslanib o‘z konteyner sinflarini yaratishi mumkin. Bunga kirishishdan oldin muhim tushunchani bilishinggiz shart, yaʻni STL kutubxonasining fundamental tushunchasi bu shablondir
    Barcha konteyner sinflari standartlashtirilgan interfeysi bilan taʻminlangan. Turli konteynerlar uchun bir xil amallarning maʻnosi bir xil bo‘lishi tabiiydir. Asosiy amallar konteynerlarning barcha turlari uchun qo‘llaniladi. Standart esa faqat konteyner interfeysini belgilaydi, shuning uchun turli xil dasturlar samaradorlikda katta farq qilishi mumkin. Barcha konteynerlar o‘z xotirasini o‘zi boshqaradi, shuning uchun dasturchi bu haqida o‘ylashning hojati yo‘q.
    Deyarli har qanday konteynerlarning quyidagi xususiyatlari bor:
    2.2-jadval. Konteyner xususiyatlari.




    Xususiyat nomi

    mazmuni

    1

    value_type

    Konteyner elementining tipi

    2

    size_type

    Elementlar indeksining tipi

    3

    iterator

    Iterator

    4

    const_iterator

    O‘zgarmas iterator

    5

    reverse_iterator

    Teskari iterator

    6

    const_reverse_iterator

    O‘zgarmas teskari iterator

    7

    reference

    Elementga havola

    8

    const_reference

    O‘zgarmas elementga havola

    9

    key_type

    Kalit tipi (assotsiativ konteynerlar uchun)

    10

    key_compare

    Taqqoslash mezoni (assotsiativ konteynerlar
    uchun)

    Iterator bir element uchun ko‘rsatkichga ekvivalentidir. Ular konteynerlarni to‘g‘ri yoki teskari yo‘nalishda ko‘rish uchun ishlatiladi. Iteratordan talab qilinadigan barcha amallar konteyner elementiga murojaat qilish va uning keyingi elementiga o‘tish amalini amalga oshirishdir. Konteynerlarning elementlarining qiymatlari o‘zgarmaganda o‘zgarmas iteratorlardan foydalaniladi.


    Iteratorlar yordamida haqiqiy maʻlumotlar tiplari haqida o‘ylamasdan, konteyner elementlarga murojaat qilish uchun foydalanish mumkin. Buning uchun, har bir konteyner quyidagi 2.3-jadvalda keltirilgan bir necha usullardan foydalanishni tavsiya qilinadi. Har bir konteyner uchun bu tiplar va usullarni, ularni realizatsiyasini amalga oshirishga bog‘liq tarzda belgilanadi. Shuningdek, ixtiyoriy konteynerlarda ularning hajmi haqida maʻlumot olish uchun usullari mavjud:
    size() – elementlar soni;
    max_size() – konreynerning maksimal o‘lchami (1 miliard ta element uchun);
    empty() – mantiqiy usuli, konteyner bo‘shligini tekshiradi;
    Zaruriyat bo‘lganda dasturchi konteynerning maydonlari va usullari ketma- ket o‘zlashtirib boraveradi. Biz ham zaruriyat tug‘ilganda foydalanamiz.
    2.3-jadval. Konteyner sinflarning umumiy usullari.




    Usullar

    Izoh

    1

    iterator begin()
    const_iterator begin () const

    Birinchi elementni ko‘rsatadi

    2

    iterator end() const_iterator end ()
    const

    Oxirgisidan keyingi elementni ko‘rsatadi

    3

    reverse_iterator rbegin() const_reverse_iterator
    rbegin () const

    Teskari ketma-ketlikda birinchi elementni ko‘rsatadi

    4

    reverse_iterator rend() const_reverse_iterator
    rend () const

    Teskari ketma-ketlikda oxirgisidan keyingi elementni ko‘rsatadi



    Download 1,83 Mb.
    1   ...   14   15   16   17   18   19   20   21   ...   131




    Download 1,83 Mb.