C++ tilida eng samarali kutiubhona bu kutibhonasi


Download 333.61 Kb.
Pdf ko'rish
bet1/3
Sana18.06.2023
Hajmi333.61 Kb.
#1560182
  1   2   3
Bog'liq
Dasturlash Maruza mustaqil ish




C++ tilida eng samarali kutiubhona bu  kutibhonasi 
hisoblanadi chunki u sarlavha fayli qòshadi 
C++ Fayllar 
C++ dasturlash tili nafaqat boshqa dasturlash tillarida ham fayllar bilan 
ishlash juda katta ahamiyatga ega hisoblanadi. C++ dasturlash tilida 
fstream standart kutubxonadan foydalaniladi. fstream dan foydalanish 
uchun va standart kutubxonalardan foydalaniladi. 
#include  
#include  
fstream standart kutubxonasi ichida 3 ta obyekt mavjud. 
Faylga yarating va yozing 
Fayl yaratish uchun, ofstream yoki fstream ob'ektdan foydalaning va 
fayl nomini ko'rsating. Faylga yozish uchun kiritish operatoridan ( <<) 
foydalaning 
#include  
#include  
using namespace std; 
int main() { 
// 
Faylni yaratadi yoki ochadi. 
ofstream MyFile("filename.txt"); 
// 
Faylga yozadi. 
MyFile << "Hello World. MasterSherkulov.Uz"; 
// 
Faylni yopadi. 


MyFile.close(); 
2. 
Sinf-konteynerlar 
STL da quyidagi sinf-konteynerlar aniqlangan: 
Asosiy konteynerlar 
· vector  dinamk massiv 
· list  chiziqli ro‘yxat 
· deque  ikki tarafli dvustoronnyaya tartib 
· set  to‘plam 
· multiset xar bir elementi noyob bo‘lishi shart emas 
to‘plam 
· map kalit/ qiymat juftlikni saqlash uchun assotsiativ 
ro‘yxat. Bunda xar bir kalit bitta qiymat bilan bog‘langan. 
· multimap xar bir kalit bilan ikkita yoki ko‘proq qiymatlar 
bog‘langan 
Xosila konteynerlar 
· stack stek 
· queue  tartib 
· priority_queue birinchi o‘rindagi tartib 
3. 
Konteynerlarni ikki turga bo‘lish mumkin: ketma-ket va assotsiativ 
konteynerlar.


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 
bog‘lamli ro‘yxat (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 joylashtirish 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. 
4. 
C ++ 11 dan oldin, Til standartida konteyner sinflari uchun cbegin, cend 
funktsiyalari mavjud emas edi. Const, mos bo'lmagan ob'ektlar uchun 
Containter :: iterator va doimiy ob'ektlar uchun Containter :: 
const_iterator-ni qaytaradigan boshlang'ich, tugatish funktsiyalarining 
ortiqcha yuklari mavjud edi. 


C ++ 11 standartining chiqarilishi bilan vaziyat o'zgardi. O'sha. agar bizga 
doimiy iterator kerak bo'lsa (konteynerning doimiyligidan qat'iy nazar), 
biz cbegin / cend ni tanlashimiz kerak. Agar iteratorning tarkibi muhim 
bo'lmasa - siz boshlash / tugatish tugmalaridan foydalanishingiz 
mumkin, konteyner konstantasining borligi / yo'qligi asosida to'g'ri 
ortiqcha yuk tanlanadi. 
Cbegin / cend-ni qo'shish zarurati, boshqa narsalar qatori, 
o'zgarmaydigan turini o'ng tomondagi ifoda turiga qarab xulosa qilish 
qobiliyatining paydo bo'lishi bilan bog'liq edi: 
auto it = c.begin (); // u "c" turiga qarab const_iterator yoki iterator turiga 
kiradi. 
auto it = c.cbegin (); // u har doim const_iterator turida bo'ladi 
5. 
Dinamik massivlar statik massivlardan qat’iy o‘lchamga ega emasligi 
bilan farq qiladi. Biroq, bu tezkor qo'shimchalarga ega bo'lish evaziga. 
Dinamik massiv qanday ishlaydi, u bo'sh joy tugashi bilan uning 
o'lchamini o'zgartiradi. Bu odatda ikki baravar ko'payadi. Misol uchun, 
agar uning o'lchami sukut bo'yicha 10 indeksga teng bo'lsa, u 20 ga ikki 
baravar ko'payadi. Keling, buni qanday amalga oshirishini batafsil ko'rib 
chiqamiz:Dinamik massivni ajratganingizda, siz tanlagan tilingiz 
belgilangan o'lchamli statik massivni yaratadi. Aytaylik, bu o'lcham 10 
ga teng. 
Aytaylik, siz massivingizga 11-elementni qo'shmoqchisiz. Bu sizning 
massivingizda bo'sh joy tugashiga olib keladi, bu esa uning o'lchamidan 
ikki baravar kattaroq massivni yaratishga olib keladi (20). 


Shundan so'ng, 10 o'lchamdagi eski massiv barcha qiymatlarini 20 
o'lchamli kattaroq massivga nusxalashi kerak. 
Endi eski massiv sizning operatsion tizimingizga xotirani bo'shatish 
uchun uni o'chirishni aytadi. 
Va nihoyat, 20 o'lchamdagi kattaroq massiv endi unga 11-buyumni 
qo'shadi.Va bu statik va dinamik massivlar o'rtasidagi farq! Umid 
qilamanki, bizda nima uchun ikkalamiz ham borligini va har bir turdan 
foydalanishning salbiy va ijobiy tomonlarini tushunasiz.
6. 
Assosiativ konteynerlar sinfiga set, map, multiset, multimap sinflari 
kiradi. 
Set - faqat kalit qiymatli ma'lumotlarni saqlashni taminlaydi, bunda kalit 
unikal bo'ladi. 
Map - unikal qiymatli,, kalit-qiymat" ko'rinishida ma'lumotlarni saqlashni 
taminlaydi. 
Multiset - faqat kalit ko'rinishida ma'lumotlarni saqlashni taminlaydi, 
bunda kalit unikal takrorlanuvchi bo'ladi. 
Multimap - ,, kalit-qiymat" kalit ko'rinishida ma'lumotlarni saqlashni 
taminlaydi. 
7. 
Barcha assotsiativ konteynerlar quyidagi amallarni qo‘llab quvvatlaydi:
count – elementlar sonini qaytaradi, belgilangan kalit bo‘yicha 
elementlar sonini qaytaradi;
find –elementga ko‘rsatkichga mos bo‘lgan iteratorni qaytaradi, agar 
bunday bo‘lmasa end() funksiyasini vazifasini bajaradi.


equal_range – berilgan intervaldigi barcha elementlar uchun iteratorlar 
juftligini qaytaradi. 
8. 
А= to‘plаm elementlаri uchun qo‘shimchа shаrt: а element b dаn оldin 
kelаdi (yoki b element а dаn keyin kelаdi) shаrti bаjаrilsа А gа 
tаrtiblаshtirilgаn juftlik deyilаdi. Umumiy hоldа to‘plаm elyemyentlаri 
ikki vа undаn оrtiq bo‘lsа, u hоldа tаrtiblаshtirilgаn to‘plаm tushunchаsi 
kiritilаdi. 
Tа’rif. А vа B to‘plаmlаrning dekаrt ko‘pаytmаsi deb, bаrchа 
tаrtiblаshtirilgаn juftliklаr to‘plаmigа аytilаdi vа kаbi 
belgilаnаdi, bu yerdа vа . Shundаy qilib 
Misоl. vа bo‘lsа, -? 
=
=
{<>,<>,<>,<>,<>,<>} 
To‘plamlar ustida amalarda keltirilgan diаgrаmmаlаrgа Eyler-Veynn 
diаgrаmmаlаri deyilаdi. Ushbu kiritilgаn аmаllаr yordаmidа аyrim 
to‘plаmlаrni bоshqаlаri оrqаli ifоdаlаsh mumkin, bundа birinchi bo‘lib 
to‘ldiruvchi аmаli, keyin kesishmа vа undаn keyin yig‘indi vа аyirmа 
аmаllаri bаjаrilаdi. Bu tаrtibni ozgаrtirish uchun qаvslаrdаn 
fоydаlаnilаdi. Shundаy qilib to‘plаmni bоshqа to‘plаmlаr оrqаli аmаllаr, 
qаvslаrdаn fоydаlаnilgаn hоldа ifоdflаsh mumkin, bundаy ifоdа 
to‘plаmning аnаlitik ifоdаsi deyilаdi. 
9. 
C++ dagi adapter Adapter - bu mos kelmaydigan ob'ektlarning hamkorlik 
qilishiga imkon beruvchi strukturaviy dizayn namunasi. Adapter ikkita 
ob'ekt o'rtasida o'rash vazifasini bajaradi. U bitta ob'ekt uchun 


qo'ng'iroqlarni ushlaydi va ularni ikkinchi ob'ekt tomonidan taniladigan 
format va interfeysga aylantiradi. Adapter haqida ko'proq bilib oling. 
Uning turlari 
Konteyner adapteri 
Stack adapteri 
Navbat adapteri 
Priority_queue adapter 
10. 
Stek. Stekda uning elementlariga faqat bir uchidan murojaat qilish 
mumkinligi bilan xarakterlanadi va stekning yuqori qismi deb ataladi. Bu 
LIFO (Last In - First Out, birinchi kirgan oxiri chiqadi) tamoyili bo‘yicha 
faoliyat ko‘rsatuvchi ma’lumotlar to‘plamidir. 

Download 333.61 Kb.

Do'stlaringiz bilan baham:
  1   2   3




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