C++ ma’lumotlar tuzilmalari va STL


ULASHISH

Ma’lumotlar tuzilmalari

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

C++ tilida boshqa ko‘plab ma’lumotlar tuzilmalari ham bor, ularning har biri ma’lumotlar bilan turlicha ishlash uchun qo‘llaniladi.

Ular C++ STL tarkibiga kiradi. STL — The Standard Template Library (standart shablonlar kutubxonasi) degani.


C++ STL

STL — ma’lumotlarni samarali saqlash va ular ustida amallar bajarish uchun turli ma’lumotlar tuzilmalari va algoritmlardan iborat kutubxona.

Agar ma’lumotlar tuzilmalari ma’lumotlarni saqlaydi desak, algoritmlar turli masalalarni hal qilish uchun — ko‘pincha shu ma’lumotlar tuzilmalarida qidiruv o‘tkazish va ularni o‘zgartirish orqali — ishlatiladi, deyishimiz mumkin.

To‘g‘ri ma’lumotlar tuzilmasi va algoritmdan foydalanish, ayniqsa katta hajmdagi ma’lumotlar bilan ishlaganda, dasturingiz tezroq ishlashiga yordam beradi.

Eng keng tarqalgan ma’lumotlar tuzilmalari:

Ma’lumotlar tuzilmasi Tavsif
Vektor (vector) Elementlarni massiv kabi saqlaydi, lekin o‘lchami dinamik ravishda o‘zgarishi mumkin. Elementlar odatda oxiriga qo‘shiladi va oxiridan olib tashlanadi. Elementlarga indeks orqali murojaat qilish mumkin.
List Elementlarni ketma-ket saqlaydi, bunda har bir element keyingisi bilan bog‘langan bo‘ladi. Elementlarni ikkala uchidan qo‘shish va olib tashlash mumkin. Indeks orqali murojaat qilib bo‘lmaydi.
Stek (stack) Elementlarni LIFO (Last In, First Out — oxirgi kirgan birinchi chiqadi) deb ataladigan muayyan tartibda saqlaydi: elementlar faqat yuqoridan qo‘shiladi va yuqoridan olib tashlanadi. Indeks orqali murojaat qilib bo‘lmaydi.
Navbat (queue) Elementlarni FIFO (First In, First Out — birinchi kirgan birinchi chiqadi) deb ataladigan muayyan tartibda saqlaydi: elementlar oxiriga qo‘shiladi va oldidan olib tashlanadi. Indeks orqali murojaat qilib bo‘lmaydi.
Deque Elementlarni ikki tomonlama navbatda (double-ended queue) saqlaydi: elementlarni ikkala uchidan qo‘shish va olib tashlash mumkin. Elementlarga indeks orqali murojaat qilish mumkin.
Set Takrorlanmas (noyob) elementlarni saqlaydi. Indeks orqali murojaat qilib bo‘lmaydi.
Map Elementlarni "kalit/qiymat" juftliklarida saqlaydi. Elementlarga (indeks orqali emas) kalitlar orqali murojaat qilinadi.

Qaysi biridan foydalanish aniq ehtiyojlaringizga bog‘liq. Ularning barchasi uchun umumiy jihat shundaki, ulardan foydalanish uchun tegishli sarlavha faylini qo‘shishingiz kerak:

Misol

// Include the vector library #include <vector> // Include the list library #include <list> // Include the set library #include <set> // Include the map library #include <map> // Include the stack library #include <stack> // Include the queue library #include <queue>

Mana, <vector> kutubxonasini qo‘shganimizdan keyin vektorlardan foydalanishga misol:

Misol

// Create a vector called cars that will store strings vector<string> cars = {"Volvo", "BMW", "Ford", "Mazda"}; // Print vector elements for (string car : cars) {   cout << car << "\n"; }
O‘zingiz sinab ko‘ring »

Keyingi boblarda har bir ma’lumotlar tuzilmasi qanday ishlashi va ulardan qanday foydalanish tushuntiriladi.



STL’ning asosiy tushunchalari

STL’ning asosiy tarkibiy qismlari konteynerlar, iteratorlar va algoritmlar hamda ular o‘rtasidagi bog‘liqlikdan iborat:

  • Konteynerlar — ma’lumotlarni saqlash imkonini beradigan ma’lumotlar tuzilmalari, masalan, vektorlar, list’lar va h.k.
  • Iteratorlar — ma’lumotlar tuzilmasi elementlariga murojaat qilish uchun ishlatiladigan obyektlar.
  • Algoritmlar ma’lumotlar tuzilmalari ustida iteratorlar orqali amallar bajaradigan sort() va find() kabi funksiyalarni o‘z ichiga oladi.

Informatikada ma’lumotlar tuzilmalari va algoritmlar bir-biri bilan chambarchas bog‘liq. Agar ma’lumotlar tuzilmasida algoritmlar yordamida samarali qidiruv o‘tkazib yoki uni samarali o‘zgartirib bo‘lmasa, uning qadri kam; algoritmlar ham ular ishlaydigan ma’lumotlar tuzilmasisiz unchalik qadrga ega emas.

Keyingi boblarda hammasi qanday bog‘langanini ko‘rasiz.




W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!