20. C++ STL — tayyor kutubxonalar

C++ da ko‘p narsalarni noldan yozish shart emas.

Tilning o‘zida dasturchilarga yordam beradigan ko‘plab tayyor vositalar mavjud.

Ular STL (Standard Template Library) deb ataladi.

STL yordamida ma'lumotlarni saqlash, qidirish va tartiblash kabi ishlarni oson bajarish mumkin.

STL nima?

STL — C++ tarkibidagi tayyor klasslar va funksiyalar to‘plami.

Masalan, bizga bir nechta sonlarni saqlash kerak bo‘lsa, vector ishlatishimiz mumkin.

#include <vector>

vector<int> sonlar = {10, 20, 30};

Bu oddiy massivga o‘xshaydi, lekin vector bilan ishlash qulayroq.


vector

vector — bir nechta qiymatlarni saqlash uchun ishlatiladi.

Masalan:

#include <iostream>
#include <vector>

using namespace std;

int main() {
    vector<int> sonlar = {10, 20, 30};

    cout << sonlar[0];

    return 0;
}

Natija:

10

vector ga element qo‘shish

push_back() yordamida yangi element qo‘shish mumkin.

vector<int> sonlar;

sonlar.push_back(10);
sonlar.push_back(20);
sonlar.push_back(30);

Endi sonlar ichida:

10
20
30

bor.


vector elementlarini chiqarish

for yordamida barcha elementlarni chiqarish mumkin.

vector<int> sonlar = {10, 20, 30};

for (int son : sonlar) {
    cout << son << endl;
}

Natija:

10
20
30

Bu yerda:

for (int son : sonlar)

sonlar ichidagi elementlarni bittadan oladi.


size()

size() vector ichida nechta element borligini beradi.

Masalan:

vector<int> sonlar = {10, 20, 30};

cout << sonlar.size();

Natija:

3

sort()

STL ichida ma'lumotlarni tartiblash uchun tayyor sort() funksiyasi mavjud.

Masalan:

#include <algorithm>
#include <vector>

vector<int> sonlar = {30, 10, 20};

sort(sonlar.begin(), sonlar.end());

Endi:

10
20
30

bo‘ladi.


string

string ham C++ da juda ko‘p ishlatiladigan tayyor klasslardan biridir.

Masalan:

string ism = "Ali";

cout << ism;

string bilan matnlar bilan ishlash mumkin.


map

map ma'lumotlarni kalit va qiymat ko‘rinishida saqlash uchun ishlatiladi.

Masalan:

#include <map>

map<string, int> yosh;

yosh["Ali"] = 18;
yosh["Vali"] = 20;

Bu yerda:

Ali  → 18
Vali → 20

saqlanadi.

Keyin:

cout << yosh["Ali"];

Natija:

18

set

set takrorlanmaydigan qiymatlarni saqlash uchun ishlatiladi.

Masalan:

#include <set>

set<int> sonlar;

sonlar.insert(10);
sonlar.insert(20);
sonlar.insert(10);

Bu yerda 10 ikki marta qo‘shilsa ham, faqat bir marta saqlanadi.

Natijada:

10
20

bo‘ladi.


find()

STL yordamida ma'lumot qidirish ham mumkin.

Masalan:

#include <algorithm>
#include <vector>

vector<int> sonlar = {10, 20, 30};

auto natija = find(sonlar.begin(), sonlar.end(), 20);

if (natija != sonlar.end()) {
    cout << "Son topildi";
}

Natija:

Son topildi

Hozircha auto va iteratorlarni chuqur o‘rganish shart emas.

Muhimi, STL yordamida tayyor qidirish funksiyalaridan foydalanish mumkinligini bilish.


Nima uchun STL kerak?

Tasavvur qiling, sizga 1000 ta sonni saqlash va tartiblash kerak.

Buning uchun hamma narsani o‘zingiz yozishingiz shart emas.

STL yordamida:

vector
sort()
find()
map
set

kabi tayyor vositalardan foydalanishingiz mumkin.

Bu vaqtni tejaydi va kodni qisqartiradi.


Eng ko‘p uchraydigan STL vositalari

Boshlang‘ich dasturchi uchun quyidagilarni bilish foydali:

vector    → ma'lumotlar ro‘yxati
map       → kalit va qiymat
set       → takrorlanmaydigan qiymatlar
sort()    → tartiblash
find()    → qidirish
string    → matn bilan ishlash

Keyinchalik STL ning boshqa qismlarini ham o‘rganishingiz mumkin.


Oddiy amaliy dastur

Keling, foydalanuvchidan 5 ta son olib, ularni tartiblaymiz.

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
    vector<int> sonlar;

    for (int i = 0; i < 5; i++) {
        int son;

        cout << "Son kiriting: ";
        cin >> son;

        sonlar.push_back(son);
    }

    sort(sonlar.begin(), sonlar.end());

    cout << "Tartiblangan sonlar:" << endl;

    for (int son : sonlar) {
        cout << son << " ";
    }

    return 0;
}

Masalan, foydalanuvchi:

50
10
40
20
30

kiritsa, natija:

10 20 30 40 50

bo‘ladi.


STL va oddiy massiv

Oddiy massiv:

int sonlar[5];

vector:

vector<int> sonlar;

vector bilan kerak bo‘lganda yangi element qo‘shish oson:

sonlar.push_back(10);

Shuning uchun C++ dasturlarida vector juda ko‘p ishlatiladi.


Amaliy mashqlar

1-mashq

vector yordamida 5 ta son saqlang.

Keyin ularni ekranga chiqaring.


2-mashq

vector ga 5 ta son qo‘shing.

Ularni sort() yordamida kichikdan kattaga tartiblang.


3-mashq

vector ichidan berilgan sonni find() yordamida qidiring.

Agar topilsa:

Topildi

aks holda:

Topilmadi

chiqsin.


4-mashq

map yordamida 3 ta talabaning ismi va yoshini saqlang.

Masalan:

Ali → 18
Vali → 19
Hasan → 20

5-mashq

set yordamida takrorlangan sonlarni olib tashlang.

Masalan:

10 20 10 30 20 40

Natijada:

10 20 30 40

chiqsin.


Muhim narsalarni eslab qoling

STL — C++ dagi tayyor kutubxonalar va vositalar to‘plami.

vector — ro‘yxat ko‘rinishidagi ma'lumotlarni saqlash uchun.

map — kalit va qiymatni birga saqlash uchun.

set — takrorlanmaydigan qiymatlarni saqlash uchun.

sort() — ma'lumotlarni tartiblash uchun.

find() — ma'lumot qidirish uchun.

STL dasturchiga ko‘p ishlarni tezroq va osonroq bajarishga yordam beradi.

C++ kursi yakuni

Siz ushbu kurs davomida C++ ning asosiy tushunchalari bilan tanishdingiz:

  • o‘zgaruvchilar;
  • ma'lumot turlari;
  • operatorlar;
  • if va switch;
  • for va while;
  • funksiyalar;
  • massivlar;
  • pointerlar;
  • struct;
  • class va object;
  • inheritance;
  • encapsulation;
  • polymorphism;
  • fayllar bilan ishlash;
  • debugging;
  • STL.

Endi eng muhim qadam — o‘rgangan bilimlaringizdan foydalanib, kichik dasturlar yozishni boshlash.

Ko‘p kod yozgan sari C++ sizga tobora tushunarli bo‘lib boradi.