Funksiyasi kabi, get funksiyasi


Konstruktor va destrukktorlar zanjiri


Download 446.14 Kb.
bet15/23
Sana09.01.2023
Hajmi446.14 Kb.
#1085802
1   ...   11   12   13   14   15   16   17   18   ...   23
Bog'liq
Dasturlash Yakuniy javoblari (2)

Konstruktor va destrukktorlar zanjiri (konstruktorli zanjir, destruktorli zanjir);

Standartkonteynerlardadinamikxotiraniboshqarishuchun Allocator
ajratuvchimaxsussinflardanfoydalanadi. Allocator
xotiraniboshqarishningminimalbirliginibelgilaydiganvabirqatoryordamc
hitaʻriflarnitaqdimetadiganelementtipigabog‘liqdir.
Buvazifato‘rtasosiyfunksiyalariyordamidaamalgaoshiriladi:
elementlariberilganqatoruchunxotiraajratishdaallocate,
xotiranitozalashuchundeallocate, konstruktorqurishuchunconstruct,
vadestruktoruchundestroy.
Allokatorboshqatipdagielementlaruchunanalogallokatorolishda
rebind metafunksiyasiniamalgaoshirishikerak.
Alloc – elementlarninganiqtiplariuchunallokatorberilganbo‘lsin. U
tiplielementlaruchununingallokatoriniolishvariantiquyidagidasturfragme
ntidakeltirilgan.
using AllocForU = typename Alloc::template
rebind::other;
C++dastandartkutubxona (sarlavhafaylbilan)
new/new[] va delete/delete[]operatorlariniqo‘llashorqaliallocator>nitaʻminlaydi.
Bundanmodelvao‘zingizningallokatorlaringgizniyozishdafoydalanish
mumkin.

  1. Funksiyalarning qayta aniqlanishi (bazaviy sinfda aniqlangan funksiyaning kengaytirilgan sinfda qayta aniqlanishi);

Stackelementlarisatrbo‘lgano‘zgaruvchinieʻlonqiladi.
String ob’ektlaro‘zlari STL konteynerlarekanligigaeʻtiborbering.
Shundayqilib,
stekkonteynerlarningharqandayelementlarinio‘zichigaolgankonteynerlar
niolishimumkin (buboshqa STL konteynerlariuchunxosdir).
-
stackeʻlonqilishnimisollarningko‘pchiligidastekkatavsifsifatidak
o‘rishmumkin.
Ko‘pchilikdasturchibuniboshqabo‘lishibilmasligivatassafurqilmasligimu
mkin. Lekinbirxiltaʻrifmavjud stackvector>satrlaribirsteki, bundatayanchsinf
vectortanlabolingan. Masalan,
vector, list va dequeyokihattodasturchiningkonteynersinfitayanchsinflars
ifatidafoydalanish. Baʻzanso‘rashdi, nimauchun
stack>yozishmumkinemas (birinchi
stringnio‘chirganholda)? Chunki stack
konstruktoriniamalgaoshirishdabuyo‘lbelgilanganvabujudamumkin.
Ammo, butunlayboshqaturdagitavsifbo‘ladi: string vektorlarito‘plami
stack>umumanboshqastekbo‘ladi
(konteynerlarningtarkibiyjoylashtirishhaqidagieslatma).
- Judako‘pholardasteknivektorko‘rinishidainitsializatsiyaqilinda,
ammobufaqatC++11variantidamavjud. 4.1-dasturdaemplace()
funksiyasidanstekkaelementqo‘shishuchunfoydalanilgan.
- Keyingifragmentlarda, deyarlibarchaamallarni (usullarini)
ko‘rishmumkin: stack:push() – stekkabittaelementqo‘shish, top() –
stekningengyuqoridaturganelementigako‘rsatkicholish, pop() –
yuqorielementinichiqaribtashlash, size() – stekningjoriyhajmi, empty() –
stekningbo‘shliginitekshirish, swap() – ikkistekningalmashtirish,
operatop= stekniqiymatqilibboshqabirtekkaberish (o‘zlashtirish).
- Dasturdanko‘rishmumkinki,
stekadapteritayanchkonteynergaxosusullarniyo‘qotdi (at(), operator[]
vahokazo.), lekin push(), pop()
funksiyalarniqaytaaniqlashorqaliorttirilganhisoblanadi.


  1. Download 446.14 Kb.

    Do'stlaringiz bilan baham:
1   ...   11   12   13   14   15   16   17   18   ...   23




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