Laboratoriya №1. 2 Standart andozalar kutubxonasi (stl)



Download 21,38 Kb.
bet2/4
Sana05.04.2022
Hajmi21,38 Kb.
#529894
1   2   3   4
Bog'liq
Laboratoriya 2.1

Konteynerlar
STL kutubxona konteynerlarini to'rt toifaga bo'lish mumkin: ketma-ket, assotsiativ, adapter konteynerlari va psevdokonteynerlar .

Ketma-ket konteynerlar

vektor

Element qo'shilgan/o'chirilganda avtomatik o'lchamli C-ga o'xshash dinamik tasodifiy kirish massivi. uchun indeks bo'yicha kirish. Vektor oxiriga element qo'shish/o'chirish amortizatsiya qilingan vaqtni oladi, vektorning boshida yoki o'rtasida xuddi shunday operatsiya . uchun standart tez saralash. Elementni iteratsiya bo'yicha qidirish . Bool turi uchun vektor shablonining ixtisoslashuvi mavjud bo'lib , u elementlarni bit sifatida saqlash orqali kamroq xotirani talab qiladi, lekin u iteratorlarning barcha xususiyatlarini qo'llab-quvvatlamaydi.

ro'yxati

vektor konteynerdan farqli o'laroq, xotiraning ixtiyoriy bo'laklarida saqlanadi , bu erda elementlar qo'shni xotira maydonida saqlanadi. Ro'yxat bo'yicha qidirish vektorga qaraganda sekinroq, chunki elementga kirish vaqti uzoqroq. uchun indeks bo'yicha kirish. Konteynerning istalgan joyida kiritish va o'chirish juda tez amalga oshiriladi.

pastki

Dek . Konteyner vektorga o'xshaydi , lekin ikkala uchida elementlarni tezda kiritish va olib tashlash qobiliyatiga ega . Chiziqli massivlarning ikki marta bog'langan ro'yxati sifatida amalga oshirildi. Boshqa tomondan, vektordan farqli o'laroq , deque uning barcha elementlari qo'shni xotirada joylashishini kafolatlamaydi, bu esa konteyner elementlariga kirish uchun ko'rsatgich arifmetikasidan xavfsiz foydalanishni imkonsiz qiladi.




Assotsiativ konteynerlar

o'rnatish

Noyob elementlarning tartiblangan to'plami. To‘plam elementlarini kiritish/o‘chirishda ushbu to‘plam elementlariga ishora qiluvchi iteratorlar bekor bo‘lmaydi. Birlashma, kesishish, ayirish kabi to'plamlarda standart amallarni ta'minlaydi. To'plamning element turi operatorni amalga oshirishi kerak < taqqoslash operatori , yoki siz taqqoslash funktsiyasini taqdim etishingiz kerak. O'z-o'zidan muvozanatlashuvchi ikkilik qidiruv daraxti asosida amalga oshiriladi .

multiset

set bilan bir xil , lekin takroriy elementlarni saqlashga imkon beradi.

Xarita

Kalitlardan va ularning mos qiymatlaridan tashkil topgan juft elementlarning tartiblangan assotsiativ massivi. Kalitlar noyob bo'lishi kerak. Elementlarning tartibi kalitlar bilan belgilanadi. Bunday holda, kalit turi operatorni amalga oshirishi kerak < solishtirish operatori , yoki taqqoslash funktsiyasi taqdim etilishi kerak.

multimap

Map bilan bir xil , lekin bir nechta bir xil kalitlarni saqlashga imkon beradi.




Adapter konteynerlari

stack

Stack - bu elementlar qo'shiladigan va bir uchidan olib tashlanadigan konteyner.

navbat

Navbat - bu konteyner bo'lib, uning bir uchidan elementlarni qo'shishingiz mumkin, ikkinchisidan esa ularni olib tashlashingiz mumkin.

ustuvorlik_navbat

Eng katta buyum har doim birinchi bo'lib turishi uchun ustuvor navbat tashkil etilgan.




Psevdo konteynerlar

bitset

Bit maskalarini saqlash uchun ishlatiladi. Ruxsat etilgan o'lchamli vektorga o'xshaydi . Bitset ob'ekti e'lon qilinganida o'lcham belgilanadi . Bitsetda iterator yo'q . Xotira hajmi uchun optimallashtirilgan.

basic_string

Satrlarni saqlash va qayta ishlash uchun konteyner. Ketma-ket elementlarni xotirada bitta blok sifatida saqlaydi, bu butun ketma-ketlikka tezkor kirishni tashkil qilish imkonini beradi. Elementlar oddiy (fundamental) ma'lumotlar turlari bo'lishi kerak. Birlashtirish + bilan belgilanadi.

valarray

Shablon raqamli massivlarni saqlash uchun ishlatiladi va hisoblash samaradorligini oshirish uchun optimallashtirilgan. Bir oz vektorga o'xshaydi , lekin u standart konteyner operatsiyalarining ko'pchiligiga ega emas. Amallar ikkita valarray va valarray va skalar (element bo'yicha) bo'yicha aniqlanadi. Ushbu operatsiyalar vektor protsessorlarida ham, SIMD bloklari bo'lgan skalyar protsessorlarda ham samarali amalga oshirilishi mumkin.

Konteynerlar elementlarni saqlash uchun ob'ekt-qiymat semantikasidan foydalanadi. Boshqacha qilib aytganda, qo'shilganda, konteyner elementning nusxasini oladi. Agar nusxa ko'chirish istalmagan bo'lsa, unda element ko'rsatgichlari konteyneri ishlatiladi. Elementlarni belgilash tayinlash operatori yordamida amalga oshiriladi va ularni yo'q qilish destruktor yordamida amalga oshiriladi. Jadvalda konteynerlardagi elementlarga qo'yiladigan asosiy talablar ko'rsatilgan:

Usul

Tavsif

Eslatma

nusxa ko'chirish konstruktori

Eskisiga o'xshash yangi element yaratadi

Element har safar konteynerga kiritilganda ishlatiladi

tayinlash operatori

Element mazmunini asl elementning nusxasi bilan almashtiradi

Element har safar o'zgartirilganda ishlatiladi

Destruktor

Elementni yo'q qiladi

Har bir element o'chirilganda ishlatiladi

Standart konstruktor

Argumentlarsiz element yaratadi

Faqat ma'lum operatsiyalar uchun amal qiladi

operator ==

Ikki elementni solishtiradi

Ikki konteynerda == operatorini bajarishda foydalaniladi

operator <

Bir element boshqasidan kichik yoki yo'qligini aniqlaydi

Ikki konteynerda < operatorini bajarishda foydalaniladi

Barcha "to'liq" standart konteynerlar ma'lum talablarni (yoki konventsiyalarni) qondiradi. Quyidagi jadval C ni T tipidagi ob'ektlarni o'z ichiga olgan konteyner klassi deb taxmin qiladi.

Ifoda

qaytish turi

Murakkablik

Eslatma

C :: qiymat_turi

T

Kompilyatsiya vaqti




C :: havola

T

Kompilyatsiya vaqti




C::const_reference




Kompilyatsiya vaqti




C :: ko'rsatkich

C::reference ga ishora qiluvchi ko'rsatgich turi

Kompilyatsiya vaqti

Ko'rsatkich T

C :: iterator

C::reference ga ishora qiluvchi iterator turi

Kompilyatsiya vaqti

Chiqish iteratoridan boshqa har qanday turdagi iterator

C::const_iterator

C::const_reference ga ishora qiluvchi iterator turi

Kompilyatsiya vaqti

Chiqish iteratoridan boshqa har qanday turdagi iterator

C :: o'lcham_turi

Belgilanmagan butun son turi

Kompilyatsiya vaqti




C obj ;




Doimiy

Keyin: obj.size () == 0

C obj1; obj1 = obj2;




Chiziqli

Keyin: obj1 == obj2

C obj ; (& obj )->~C();

Natija ishlatilmadi

Chiziqli

Keyin: a.size () == 0.

obj.begin ()




Doimiy




obj.end ()




Doimiy




obj1 == obj2

Boolga qaytish mumkin

Chiziqli




obj1 != obj2

Boolga qaytish mumkin

Chiziqli




obj.size ()

o'lcham_turi

Turiga bog'liq

Idishning bo'shligini tekshirish tavsiya etilmaydi

obj.empty ()

Boolga qaytish mumkin

Doimiy




obj1

Boolga qaytish mumkin

Chiziqli




obj1 > obj2

Boolga qaytish mumkin

Chiziqli




obj1 <= obj2

Boolga qaytish mumkin

Chiziqli




obj1 >= obj2

Boolga qaytish mumkin

Chiziqli




obj.swap (obj2)

bekor

Doimiy




Iteratorlar
STL kutubxonasi elementlarga kirish uchun vositachi sifatida iterator deb ataladigan umumlashtirilgan abstraksiyadan foydalanadi. Har bir konteynerda "o'ziga xos" turdagi iterator mavjud bo'lib, u "modernlashtirilgan" aqlli ko'rsatgich bo'lib, ma'lum bir konteynerning elementlariga qanday kirishni "biladi". C++ standarti quyidagi jadvalda tasvirlangan iteratorlarning beshta toifasini belgilaydi:


Download 21,38 Kb.

Do'stlaringiz bilan baham:
1   2   3   4




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