Skip to content

Ma'lumot tuzilmalari va STL

Ma'lumot tuzilmalari

Ma'lumot tuzilmalari ma'lumotlarni saqlash va tartibga solish uchun ishlatiladi. Massiv ma'lumot tuzilmasiga misol bo'lib, u bir nechta elementni bitta o'zgaruvchida saqlash imkonini beradi.

C++ da boshqa ko'plab ma'lumot tuzilmalari ham mavjud bo'lib, ularning har biri ma'lumotlarni turli usullarda boshqaradi.

Bular C++ STL ning bir qismi bo'lib, STL Standart Tablon Kutubxonasi (Standard Template Library) degan ma'noni anglatadi.


C++ STL

STL — turli ma'lumot tuzilmalari va algoritmlardan iborat kutubxona bo'lib, ma'lumotlarni samarali saqlash va boshqarish uchun mo'ljallangan.

Agar ma'lumot tuzilmalari ma'lumotlarni saqlaydi desak, algoritmlar turli muammolarni hal qilish uchun ishlatiladi, ko'pincha bu ma'lumot tuzilmalarini qidirish va boshqarish orqali amalga oshiriladi.

To'g'ri ma'lumot tuzilmasi va algoritmni ishlatish dasturingizni tezroq ishlashiga yordam beradi, ayniqsa katta hajmdagi ma'lumotlar bilan ishlaganda.

Eng keng tarqalgan ma'lumot tuzilmalari:

Ma'lumot tuzilmasiTavsif
VektorElementlarni massiv kabi saqlaydi, lekin hajmi dinamik ravishda o'zgarishi mumkin. Elementlar odatda oxiridan qo'shiladi va olib tashlanadi. Indeks bo'yicha kirish mumkin.
Ro'yxatElementlarni ketma-ket saqlaydi, har bir element keyingisiga bog'langan. Elementlar ikkala uchidan ham qo'shilishi va olib tashlanishi mumkin. Indeks bo'yicha kirish mumkin emas.
StekElementlarni LIFO (Oxirgi kirgan — birinchi chiqadi) tartibida saqlaydi. Elementlar faqat tepadan qo'shiladi va olib tashlanadi. Indeks bo'yicha kirish mumkin emas.
NavbatElementlarni FIFO (Birinchi kirgan — birinchi chiqadi) tartibida saqlaydi. Elementlar oxiriga qo'shiladi va oldidan olib tashlanadi. Indeks bo'yicha kirish mumkin emas.
DekyuElementlarni ikki tomonlama navbatda saqlaydi, ikkala uchidan ham qo'shish va olib tashlash mumkin. Indeks bo'yicha kirish mumkin.
ToplamNoyob elementlarni saqlaydi. Indeks bo'yicha kirish mumkin emas.
Lug'atElementlarni "kalit/qiymat" juftliklarida saqlaydi. Kalitlar bo'yicha kirish mumkin (indeks bo'yicha emas).

Qaysi birini ishlatish sizning ehtiyojlaringizga bog'liq. Ularning barchasi uchun mos sarlavha faylini import qilish kerak:

MISOL

cpp
// Vektor kutubxonasini import qilish
#include <vector>

// Ro'yxat kutubxonasini import qilish
#include <list>

// Toplam kutubxonasini import qilish
#include <set>

// Lug'at kutubxonasini import qilish
#include <map>

// Stek kutubxonasini import qilish
#include <stack>

// Navbat kutubxonasini import qilish
#include <queue>

<vector> kutubxonasini import qilgandan so'ng vektorlarni ishlatish misoli:

MISOL

cpp
// Satrlarni saqlaydigan cars nomli vektor yaratish
vector<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};

// Vektor elementlarini chop etish
for (string car : cars) {
  cout << car << "\n";
}

Keyingi boblarda har bir ma'lumot tuzilmasi qanday ishlashini va ularni qanday ishlatishni o'rganasiz.


STL ning asosiy tushunchalari

STL ning asosiy komponentlari konteynerlar, iteratorlar va algoritmlar hamda ular o'rtasidagi munosabatdan iborat:

  • Konteynerlar — ma'lumotlarni saqlash usulini ta'minlaydigan ma'lumot tuzilmalari, masalan, vektorlar, ro'yxatlar va boshqalar.
  • Iteratorlar — ma'lumot tuzilmasining elementlariga kirish uchun ishlatiladigan obyektlar.
  • Algoritmlarsort() va find() kabi funksiyalarni o'z ichiga oladi, ular iteratorlar orqali ma'lumot tuzilmalari ustida amallar bajaradi.

Kompyuter fanida ma'lumot tuzilmalari va algoritmlar bir-birini to'ldiradi. Ma'lumot tuzilmasi algoritmlar yordamida samarali qidirish yoki boshqarish mumkin bo'lmaganda unchalik qimmatli emas, va algoritmlar ishlaydigan ma'lumot tuzilmasisiz unchalik qimmatli emas.

Keyingi boblarda hamma narsa qanday bog'liqligini ko'rasiz.