Tiplarni dinamik tarzda


Download 1.83 Mb.
bet18/131
Sana16.06.2023
Hajmi1.83 Mb.
#1503422
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.

Do'stlaringiz bilan baham:
1   ...   14   15   16   17   18   19   20   21   ...   131




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