10- hafta: Navbat tuzilmalari: Stek, navbat va dek Kalit so’zlari



Download 55,01 Kb.
bet6/8
Sana01.07.2021
Hajmi55,01 Kb.
#106683
1   2   3   4   5   6   7   8
Bog'liq
10-hafta kursatma

3.1. To’g’ri va teskari iteratorlar

STL kutubxonasi oddiy (to’g’ri) iterator – iteratorlaridan tashqari reverse_iterator – teskari iteratorlarni ham qo’llaydi. Teskari iteratorlar ham to’g’ri iteratorlar kabi ishlatiladi. Farqi keyingi va oldingi elementlarga o’tish operatorlarini ishlatishda hisoblanadi. To’g’ri iteratorlar uchun ++ konteynerning keyingi elementiga kirishni ta’minlasa, teskari iteratorlar uchun – oldingi elementga kirishni ta’minlab beradi. 



4. Ketma-ket konteynerlarning qo’llanilishi

Asosiy konteynerlarga vektorlar (vector), ro’yxatlar (list) va ikki tomonlama navbatlar (deque) kiradi. Konteynerlardan foydalanish uchun mos sarlavha fayllarini biriktirish kerak bo’ladi:

#include

#include

#include

Vektor oddiy massivga o’xshash, faqat kerakli xotirani avtomatik ajratish va xotirani tozalash bilan farq qiladi. Konteyner [] operatori yoki at funksiyasi yordamida elementlarni erkin tanlab olishdan samarali foydalanadi. Biroq vektorning oxiridan tashqari ixtiyoriy o’rniga elementni joylashtirish samarali emas. Buning uchun tanlab olingan o’rindan keyingi barcha elementlarni ularning qiymatlarini nusxalash orqali siljitish talab etiladi. Shu sababli oxirgi elementdan ixtiyoriy boshqasini o’chirish ham samarasiz hisoblanadi.

Ro’yxat ob’ektlarni ikki bog’lamli ro’yxat ko’rinishida saqlash imkonini beradi. Ro’yxatning ixtiyoriy o’rnidan yangi elementni qo’shish yoki tanlangan elementni o’chirish samarali hisoblanadi. Biroq ro’yxat elementlariga erkin kirish imkonini bermaydi, masalan, n-elementni tanlash uchun ketma-ket undan oldin turgan n-1 ta elementni ko’rib chiqish kerak bo’ladi.

Ikki tomonlama navbat ko’proq vektorga o’xshash bo’lib, elementlari xotiraning uzluksiz sohasida saqlanadi. Biroq vektordan farqli tomoni ikki tomonlama navbatlarda birinchi elementni o’chirish va yangi elementni birinchi o’ringa qo’shish juda ham samarali (shuningdek, oxiridan ham).

3-dastur kodi: Ketma-ket konteynerlar uchun ob’ektni aniqlash usullari.

Bo’sh konteyner yaratish:

vector vec1;

list lst1;

Konteynerga tanlangan o’lchamni berish va elementlarini jimlik holatiga qiymatlar bilan ta’minlash:

vector vec2(50);

list lst2(75);

Konteynerga tanlangan o’lchamni berish va elementlariga berilgan qiymatlarni ta’minlash:

vector vec3(133, 7);

list lst3(14, 8.8);

Koteynerni aniqlash va uning elementlariga boshqa konteynerning (first, last) oralig’idagi qiymatlarni ta’minlash:

int arr[8] = {0, 20, 1, 22, 8 -144, 6, -50, 100, 45};

vector vec4(arr, arr+9);

list lst4(vec4.begin()+2, vec4.end());

Koteynerni aniqlash va uning elementlariga boshqa bir turdagi konteynerning elementlari qiymatini ta’minlash:

list lst5(10, 6);

list lst6(lst5);

3-jadval. Ketma-ket konteynerlardan qo’llaniladigan funksiyalar



push_back(T& key)

Oxiridan qo’shish

vector, list, deque

pop_back()

Oxiridan o’chirish

vector, list, deque

push_front(T& key)

Boshidan qo’shish

list, deque

pop_front()

Boshidan o’chirish

list, deque

insert

Ixtiyoriy joydan qo’shish

vector, list, deque

erase

Ixtiyoriy joydan o’chirish

vector, list, deque

[], at

Ixtiyoriy elementga kirish

vector, deque

swap

Ro’yxatlar/vektorlarni almashtirish

vector, list

clear()

Ro’yxatlar/vektorlarni tozalash

vector, list

splice

Ikkita ro’yxatni birlashtirish

list

insert funksiyasining bir necha xil tatbiqlari mavjud:

iterator insert(iterator pos, const T& key); – key elementini pos ko’rsatkichi ko’rsatib turgan joyga qo’shish. Iterator yangi elementni qaytaradi.

void insert(iterator pos, size_type n, const T& key); – key qiymatli n ta elementni pos ko’rsatkichi ko’rsatib turgan joydan boshlab qo’shish.

template

void insert(iterator pos, InputIter first, InputIter last); – first..last oraliqdagi elementlarni pos ko’rsatkichi ko’rsatib turgan joydan boshlab qo’shish.

4-dastur kodi: insert() funksiyasining qo’llanilishi:

void main() {

//5 ta 0 qiymatli elementlardan iborat vektorni yaratish:

  vector v1(5,0);

//5 ta elementli massiv:

int m[5]={1,2,3,4,5};

// qiymati 100 bo’lgan elementni vektor boshiga joylashtirish:

  v1.insert(v1.begin(),100);

//ikkita qiymati 200 ga teng bo’lgan elementni vektorning birinchi elementidan keyin joylashtirish:

  v1.insert(v1.begin()+1,2,200);

//vektorning 3-elementidan keyin massivning m elementini joylashtirish:

  v1.insert(v1.begin()+3,m,m+5); //m – birinchi elementga ko’rsatkich, +5 beshta element

//vektor oxiriga 100 qiymatli elementni joylashtirish:

  v1.insert(v1.end(),100);

//vektorni chop qilish:

  for(int i=0;i

    cout << v1[i] <<' ';

}

erase funksiyasi ham bir nechta tatbiqlarga ega:



iterator erase(iterator pos); – pos iteratori ko’rsatib turgan o’rindagi elementni o’chirish.

iterator erase(iterator first, iterator last); – ko’rsatilgan oraliqdagi elementlarni o’chirish.

5-dastur kodi: erase() funksiyasining qo’llanilishiga misol:

int main() {

  vector v1; //bo’sh vektor yaratish

  int m[5] = {1,2,3,4,5};

  int n,a;

  cout << "insert n: "; cin >> n;

  for(int i=0; i < n; i++) {

    cin >> a;

//vektorning oxiridan a qiymatli elementni qo’shish:

    v1.push_back(a);

  }

//vektorni chop qilish



  for (int i=0; i < v1.size(); i++)

    cout << v1[i] << ' ';

  cout << endl;

  /*vektorning boshidan elementni o’chirish va iteratorni vektor boshiga qo’yish */

  vector::iterator iv=v1.erase(v1.begin());

  cout << *iv << '\n'; //birinchi elementni chiqarish

//vektorni chop qilish

  for (int i=0; i < v1.size(); i++)

    cout << v1[i] << ' ';




Download 55,01 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8




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