Stl (Standard Template Library) kutubxonalari bilan tanishib, uning


Chiziqli konreynerlar (array, vector, deque, list, forward_list)



Download 222,54 Kb.
Pdf ko'rish
bet8/11
Sana29.04.2023
Hajmi222,54 Kb.
#933352
1   2   3   4   5   6   7   8   9   10   11
Bog'liq
2-Ma\'ruza matni

Chiziqli konreynerlar (array, vector, deque, list, forward_list).
Standart 
konteynerlarni ikkita katta guruhga chiziqli va assotsiativ konteynerlarga bo‘lishini 
bilamiz. O‘z navbatida chiziqli konteynerlarni bog‘langan ro‘yxat (forward_list va 
list) va tasodifiy kirish konteynerlariga (ekrin konteyner deb ham yuritiladi) (deque, 
vector va array) bo‘linadi. 
Assotsiativ konteynerlar quyidagi variantlarning kombinatsiyasi bo‘lgan 
sakkizta konteyner bilan ifodalanadi (tegishli standart sinflar nomlarining qavslar 


ichida beriladi): to‘plam (*set) yoki lug‘at (*map), elementlarni takrorlashga imkon 
beruvchi (*multi*) yoki ruxsat bermaydigan, tartibga solingan solinmagan 
(unordered*). 
Barcha konteynerlar iterator va const_iterator tiplari o‘z ichiga olish uchun o‘z 
navbatida o‘qish-yozish va faqat o‘qish iteratorlarini aniqlaydi. Konteyner tarkibida 
olgan iteratorlar oralig‘ini begin() va end() (o‘qish-yozish uchun iterator), 
shuningdek cbegin() va cend() (o‘qish uchun const_iterator) funksiyalari yordamida 
olish mumkin. Konteynerlar ikki tomonlama iteratorlar bilan ham teskari o‘tish 
uchun rbegin(), rend(), crbegin() va crend() funksiyalari mavjud. 
Barcha konteynerlarni empty funksiyasi tomonidan bo‘sh uchun tekshirish 
mumkin. Qachonki cont.begin() == cont.end() bo‘lsa, o‘zgarmas konteyner bo‘sh 
hisoblanadi. end() konteynerning oxirgi elementi keyingi shartli elementga havola 
qiluvchi iteratorni qaytaradi. Elementlar sonini size() funksiyasi yordamida olish 
mumkin (forward_list bundan mustasno). Konteyner tarkibidagi funksiyalarni 
tozalash uchun clear() funksiyasidan foylalaniladi (array bundan mustasno). 
Iteratorda begin(), end(), cbegin(), cend(), rbegin(), rend(), crbegin() va crend() 
erkin funksiyalarining shablonlarini aniqlash mumkin. Bular bir xil nomli 
funksiyalarga havola qilinadi, shuningdek, bunday aniqlangan funksiyalar statik 
massiv va std::valarray uchun aniqlandi. for(:) takrorlanish operatori xuddi shanday 
shakliga tayanadi. Masalan, cr bir konteyner bo‘lsin (shuningdek, statik massiv ham 
bo‘lishi mumkin), shunda dasturda for() fragmenti quyidagicha ishlatiladi. 
for (T x : cr) work(x); 
Semantik jihatdan quyidagi fragmentga teng 

using std::begin; 
using std::end; 
const auto e = end(cr); 
for (auto p = begin(cr); p != e; ++p) 
{ T x = *p; work(x); } 


}
Bu yerda T tipi konteyner elementlarining tipiga mos kelishi shart emas va auto 
asosida konstruksiya yoki havolali tip ham bo‘lishi mumkin (eng ko‘p ishlatiladigan 
variantlar auto& va auto&&). 
Chiziqli konteynerlarni (array dan boshqa) belgilangan qiymatlardan assign() 
funksiyasini chaqirib to‘ldirish mumkin (eski qiymalari o‘chiriladi) va resize() 
funksiyasi bilan o‘lchamlarini (hajmi kamayganda elementlar oxiridan o‘chiriladi 
va hajmi ortganda, yangi elementlar oxiridan qo‘shiladi) aniqlash mumkin. 
Konteynerning birinchi elementiga to‘g‘ridan-to‘g‘ri murojaat (tartiblanmagan 
assotsiativ konteynerlardan tashqari) front() funksiya yordamida amalga oshiriladi. 
Iteratorlari ikki tomonlama bo‘lgan barcha konteynerlarning oxirgi elementga 
murojaat uchun back() funksiyasi, shuningdek, teskari yo‘naltirilgan iteratorlar 
reverse_iterator va const_reverse_iterator funksiyalaridan foydalaniladi. Tegishli 
intervallarni rbegin(), rend() i crbegin(), crend() funksiyalari yordamida olish 
mumkin. 
Barcha konteynerlarni tenglik va tengsizlik uchun taqqoslash mumkin va 
ularning mazmunini swap() funksiyasi yordamida almashtirish mumkin. 
Chegaralanmagan assotsiativlardan tashqari barcha konteynerlarni <, <= , > va >= 
operatorlari leksikografik jihatdan taqqoslash mumkin. 
Standart konteynerlarda dinamik xotirani boshqarish uchun Allocator 
ajratuvchi maxsus sinflardan foydalanadi. Allocator xotirani boshqarishning 
minimal birligini belgilaydigan va bir qator yordamchi taʻriflarni taqdim etadigan 
element tipiga bog‘liqdir. Bu vazifa to‘rt asosiy funksiyalari yordamida amalga 
oshiriladi: elementlari berilgan qator uchun xotira ajratishda allocate, xotirani 
tozalash uchun deallocate, konstruktor qurish uchun construct, va destruktor 
uchun destroy. Allokator boshqa tipdagi elementlar uchun analog allokator 
olishda rebind metafunksiyasini amalga oshirishi kerak. 
Alloc – elementlarning aniq tiplari uchun allokator berilgan bo‘lsin. U tipli 
elementlar uchun uning allokatorini olish varianti quyidagi dastur fragmentida 
keltirilgan. 


using AllocForU = typename Alloc::template rebind::other; 
C++da 
standart 
kutubxona 
( 
sarlavha 
fayl 
bilan) 
new/new[] va delete/delete[] operatorlarini qo‘llash orqali allocator ni 
taʻminlaydi. Bundan model va o‘zingizning allokatorlaringgizni yozishda 
foydalanish mumkin. 

Download 222,54 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   10   11




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

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish