• Topshirdi: Normuminov Muhriddin Fan o’qituvchisi:______________________ Urganch 2022
  • Texnologiyalari va kommunikatsiyalarini rivojlantirish vazirligi muhammad al-xorazmiy nomidagi




    Download 41.57 Kb.
    Sana16.03.2023
    Hajmi41.57 Kb.
    #45681
    Bog'liq
    10-mustaqil ish
    pdf excel, \'Mavzu ochiq dars 1, 2-mustaqil ta'lim topshiriqlari, IMG 20230315 115859, 6-sinf tabiiy fan kalit, 1.2 ММАNA дастури, 6476175, 1-mavzu Mustaqillikka erishish arafasida O‘zbekistondagi ijtimo, TV-Kanal Light site, test argos, 7-Algebra




    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;
    }



    Download 41.57 Kb.




    Download 41.57 Kb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Texnologiyalari va kommunikatsiyalarini rivojlantirish vazirligi muhammad al-xorazmiy nomidagi

    Download 41.57 Kb.