Amaliyot mashg’uloti № Konteyner sinflari



Download 24,8 Kb.
Sana29.05.2022
Hajmi24,8 Kb.
#619123
Bog'liq
6-amaliy mashg\'ulot

Amaliyot mashg’uloti № 6. Konteyner sinflari.


Ishning maqsadi:. Konteyner sinflari bilan ishlash
Kerakli jixoz va vositalar: kompyuter, video proyektor
Nazariy ma’lumot
Hozirgacha eng ko‘p ishlatiladigan STL funksionalligi konteyner sinflari (yoki ular "konteynerlar" deb ham ataladi). STL turli vaziyatlarda ishlatilishi mumkin bo‘lgan juda ko‘p turli xil konteyner sinflarini o‘z ichiga oladi. Umuman olganda, STL konteynerlari uchta asosiy toifaga bo‘linadi:
ketma-ket;
assotsiativ;
adapterlar.
Ketma-ket konteynerlar. Ketma-ket konteynerlar (yoki "ketma-ket konteynerlar") elementlari ketma-ket joylashgan konteyner sinflari. Ularning o‘ziga xos xususiyati shundaki, siz elementingizni konteynerning istalgan joyiga qo‘shishingiz mumkin. Ketma-ket konteynerning eng keng tarqalgan namunasi massivdir: massivga 4 ta element qo‘shganda, bu elementlar siz qo‘shganingizdek aniq tartibda (massivda) paydo bo‘ladi.
C ++ 11 dan boshlab, STL 6 ta ketma-ketlik konteynerlarini o‘z ichiga oladi:
std :: vektor;
std :: deque;
std :: massiv;
std :: ro‘yxat;
std :: forward_list;
std :: basic_string.
Vektor sinfi (yoki oddiygina "vektor") dinamik massiv bo‘lib, uning barcha elementlarini o‘z ichiga olishi uchun kerak bo‘lganda o‘sadi. Vektor klassi [] indekslash operatori orqali o‘z elementlariga o‘zboshimchalik bilan kirish imkonini beradi, shuningdek, elementlarni qo‘shish va olib tashlashni qo‘llab-quvvatlaydi.
Quyidagi dasturda vektorga 5 ta butun son qo‘shamiz va ularni keyinchalik ko‘rsatish uchun kirish uchun haddan tashqari yuklangan indekslash operatoridan [] foydalanamiz:
bitta
2
3
4
5
6
7
sakkiz
9
10
11 #include
#o‘z ichiga
int main ()
{
std :: vektor vect;
uchun (int count = 0; count <5; ++ count)
vect.push_back (10 - hisoblash); // massiv oxiriga raqamlar qo‘shing
uchun (int indeks = 0; indeks
std :: cout << vect [indeks] << ''
std :: cout << '\ n';
}
Dasturni bajarish natijasi:
10 9 8 7 6
Deque (yoki oddiygina "deque") klassi dinamik massiv sifatida amalga oshirilgan deque bo‘lib, u har ikki tomondan ham o‘sishi mumkin. Masalan:
bitta
2
3
4
5
6
7
sakkiz
9
10
o‘n bir
12
o‘n uch
14
15
o‘n olti
17 #include
#o‘z ichiga
int main ()
{
std :: deque deq;
uchun (int count = 0; count <4; ++ count)
{
deq.push_back (hisoblash); // massiv oxiriga raqamlarni kiriting
deq.push_front (10 - hisoblash); // massiv boshiga raqamlarni kiriting
}
uchun (int indeks = 0; indeks
std :: cout << deq [indeks] << '';
std :: cout << '\ n';
}
Dasturni bajarish natijasi:
7 8 9 10 0 1 2 3
Roʻyxat (yoki oddiygina “roʻyxat”) ikki tomonlama bogʻlangan roʻyxat boʻlib, uning har bir elementi 2 ta koʻrsatkichdan iborat: biri roʻyxatning keyingi elementiga, ikkinchisi esa roʻyxatning oldingi elementiga ishora qiladi. ro‘yxat faqat ro‘yxatning boshi va oxiriga kirishni ta’minlaydi - tasodifiy kirish taqiqlanadi. Agar siz o‘rtadagi biror qiymatni topmoqchi bo‘lsangiz, unda siz izlayotgan narsani topmaguningizcha, bir chetidan boshlashingiz va ro‘yxatning har bir elementini takrorlashingiz kerak. Ikki marta bog'langan ro‘yxatning afzalligi shundaki, agar siz qaerga qo‘shmoqchi bo‘lsangiz, narsalarni qo‘shish juda tezdir. Odatda, iteratorlar ikki marta bog'langan ro‘yxat elementlarini takrorlash uchun ishlatiladi.
Garchi string (va wstring) klassi odatda ketma-ket konteyner sifatida aytilmasa ham, aslida u char (yoki wchar) tipidagi elementlarga ega vektor sifatida ko‘rib chiqilishi mumkin.
Assotsiativ konteynerlar. Assotsiativ konteynerlar konteyner sinflari bo‘lib, ularning barcha elementlarini (jumladan, siz qo‘shganlarni) avtomatik ravishda saralaydi. Odatiy bo‘lib, assotsiativ konteynerlar elementlarni multiset - bu to‘plam, lekin takroriy elementlarga ruxsat beriladi.
map (yoki “assotsiativ massiv”) har bir element kalit-qiymat juftligi bo‘lgan to‘plamdir. "Kalit" ma’lumotlarni saralash va indekslash uchun ishlatiladi va noyob bo‘lishi kerak. Va "qiymat" - haqiqiy ma’lumotlar.
multimap (yoki “lug'at”) - takroriy kalitlarga ruxsat beruvchi xarita. Barcha kalitlar o‘sish tartibida tartiblangan va siz qiymatni kalit bo‘yicha ko‘rishingiz mumkin.
Adapterlar - bu muayyan vazifalar uchun mo‘ljallangan maxsus, oldindan belgilangan konteyner sinflari. Qiziqarli tomoni shundaki, siz adapter qaysi seriyali konteynerdan foydalanishi kerakligini tanlashingiz mumkin.
stack - bu konteyner klassi, uning elementlari LIFO printsipi bo‘yicha ishlaydi (inglizcha "Last In, First Out" = "Last In, First Out"), ya’ni. elementlar idishning oxiriga qo‘shiladi (olib keladi) va u erdan (idishning oxiridan) chiqariladi (itariladi). Odatda steklar odatiy ketma-ket konteyner sifatida deque dan foydalanadi (bu biroz g'alati, chunki vektor yaxshiroq variant bo‘lar edi), lekin siz vektor yoki ro‘yxatni ham ishlatishingiz mumkin.

Download 24,8 Kb.

Do'stlaringiz bilan baham:




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