Texnologiyalari va kommunikatsiyalarini rivojlantirish vazirligi muhammad al-xorazmiy nomidagi



Yüklə 41,57 Kb.
tarix17.12.2023
ölçüsü41,57 Kb.
#150193
10-mustaqil ish





O‘ZBEKISTON RESPUBLIKASI AXBOROT
TEXNOLOGIYALARI VA KOMMUNIKATSIYALARINI
RIVOJLANTIRISH VAZIRLIGI
MUHAMMAD AL-XORAZMIY NOMIDAGI
TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI URGANCH FILALI
Dasturlash 1 fanidan

Mustaqil ish

Gurux: 972-21
Topshirdi: Normuminov Muhriddin
Fan o’qituvchisi:______________________

Urganch 2022

Mavzu: Vektorlarni funksiya parametrlari sifatida qo‘llanilishi.
Vektor ( ) dinamik massivnistd::vector amalga oshiradigan standart C++ umumiy dasturlash namunasidir .
Shablon vectorsarlavha faylida joylashgan . Barcha standart komponentlar singari, u std . Ushbu interfeys standart C massivining ishlashini (masalan, elementlarga tezkor tasodifiy kirish ) taqlid qiladi, shuningdek, elementlar kiritilganda yoki olib tashlanganda vektorning avtomatik o'lchamini o'zgartirish kabi ba'zi qo'shimcha funktsiyalar.
Vektorning barcha elementlari bir xil turdagi bo'lishi kerak. Misol uchun, siz bir vektor misolida char va int ma'lumotlarini birga saqlay olmaysiz . Sinfda elementlarga kirish, elementlarni qo‘shish va o‘chirish hamda saqlash uchun elementlar sonini olish uchun vectorstandart usullar to‘plami mavjud .
Afzalliklari va kamchiliklari 
Dinamik massivning barcha ilovalari singari , vektor ham qo'shimcha ma'lumotlar tuzilmalaridan foydalanmaydi, ma'lumotlar xotirada yonma-yon joylashgan, shuning uchun ular yaxshi keshlangan .
Vektor aniq ma'lumotlarni saqlash uchun zarur bo'lgan xotirani tezda ajratishi mumkin. Bu, ayniqsa, ro'yxat yaratilgunga qadar uzunligi noma'lum bo'lishi mumkin bo'lgan ro'yxatlardagi ma'lumotlarni saqlash uchun foydalidir va o'chirish (ehtimol, oxiridan tashqari) kamdan-kam hollarda talab qilinadi.
Boshqa STL konteynerlari singari, u murakkab yoki foydalanuvchi tomonidan aniqlangan ibtidoiy ma'lumotlar turlarini o'z ichiga olishi mumkin.
Vektor tasodifiy kirish imkonini beradi ; ya'ni vektor elementiga massiv elementi kabi (indeks bo'yicha) murojaat qilish mumkin. Boshqa tomondan, bog'langan ro'yxatlar va to'plamlar tasodifiy kirish va ko'rsatkich arifmetikasini qo'llab-quvvatlamaydi.
Vektordan elementni olib tashlash yoki hatto vektorni tozalash ham ushbu element bilan bog'liq xotirani bo'shatish shart emas. Buning sababi shundaki, vektor yaratilganidan beri uning maksimal o'lchami yangi vektor uchun yaxshi o'lcham hisoblanadi.
Vektorlar elementlarni istalgan joyga, lekin oxirida kiritish uchun samarasiz. Bunday operatsiya bog'langan ro'yxatlar uchun O (1) bilan solishtirganda O(n) ( O-notatsiyasiga qarang ) murakkabligiga ega . Elementni ixtiyoriy joydan olib tashlash ham O(n) murakkabligiga ega (oʻchirilgandan keyin joylashgan barcha elementlarning boshiga oʻtish kerak, bu esa eng yomon holatda n-1 harakatni beradi). Bu kirish tezligi bilan qoplanadi. Vektorning ixtiyoriy elementiga kirish bog'langan ro'yxat uchun O(n) va muvozanatli ikkilik qidiruv daraxti uchun O(log n) bilan solishtirganda O(1) murakkablikka ega .
Vektorlar o'lchamlari o'zgarishi mumkin bo'lgan massivlarni ifodalovchi ketma-ket konteynerlardir.

Xuddi massivlar singari, vektorlar ham o'z elementlari uchun tutashgan saqlash joylaridan foydalanadilar, ya'ni ularning elementlariga uning elementlariga muntazam ko'rsatgichlardagi ofsetlar yordamida va massivlardagi kabi samarali kirish mumkin. Ammo massivlardan farqli o'laroq, ularning o'lchamlari dinamik ravishda o'zgarishi mumkin, ularning saqlashi konteyner tomonidan avtomatik ravishda amalga oshiriladi.

Ichki vektorlar o'z elementlarini saqlash uchun dinamik ravishda ajratilgan massivdan foydalanadilar. Yangi elementlar kiritilganda hajmini oshirish uchun bu massivni qayta taqsimlash kerak bo'lishi mumkin, bu esa yangi massiv ajratish va barcha elementlarni unga ko'chirishni nazarda tutadi. Bu ishlov berish vaqti jihatidan nisbatan qimmat vazifa va shuning uchun konteynerga har bir element qo'shilganda vektorlar qayta taqsimlanmaydi.

Buning o'rniga, vektor konteynerlari mumkin bo'lgan o'sish uchun qo'shimcha saqlash joylarini ajratishi mumkin va shuning uchun konteyner o'z elementlarini (ya'ni, uning hajmi ) saqlash uchun zarur bo'lgan saqlash hajmidan kattaroq haqiqiy sig'imga ega bo'lishi mumkin. Kutubxonalar xotiradan foydalanish va qayta taqsimlash o'rtasidagi muvozanatni saqlash uchun turli xil o'sish strategiyalarini amalga oshirishi mumkin, ammo har qanday holatda, qayta taqsimlashlar faqat o'lchamning logarifmik ravishda o'sib borayotgan oraliqlarida amalga oshirilishi kerak , shunda vektor oxiriga alohida elementlarning kiritilishi amortizatsiyalangan doimiy vaqt bilan ta'minlanishi mumkin. murakkablik (qarang push_back ).

Shuning uchun, massivlarga nisbatan vektorlar saqlashni boshqarish va samarali tarzda dinamik o'sish qobiliyati evaziga ko'proq xotirani iste'mol qiladi.

Boshqa dinamik ketma-ketlik konteynerlari ( deques , lists va forward_lists ) bilan solishtirganda vektorlar uning elementlariga (xuddi massivlar kabi) kirishda juda samarali va elementlarni oxiriga qo'shish yoki olib tashlashda nisbatan samaralidir . Elementlarni oxiridan tashqari boshqa pozitsiyalarga qo'shish yoki olib tashlash bilan bog'liq operatsiyalar uchun ular boshqalarga qaraganda yomonroq ishlaydi va lists va forward_lists ga qaraganda kamroq izchil iterator va havolalarga ega .


Vectorlarni funksiya yordamida ishlashdan funksiyalardan foydalanimiz
Misol 1. Vektorni o’lchamini topishni funksiyadan foydalanish
#include
#include
using namespace std;
int func(vector a)
{
return a.size();
}
int main ()
{
vector myints;
cout << "0. size: " << func(myints) << '\n';

for (int i=0; i<14; i++) myints.push_back(i);


cout << "1. size: " << func(myints) << '\n';

myints.insert (myints.end(),10,100);


cout << "2. size: " << func(myints) << '\n';

myints.pop_back();


cout << "3. size: " << func(myints) << '\n';
return 0;
}



Yüklə 41,57 Kb.

Dostları ilə paylaş:




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©www.genderi.org 2024
rəhbərliyinə müraciət

    Ana səhifə