C++ ma’lumotlar tuzilmalari va STL
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()vafind()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!
