C++ navbatlar
C++ navbat
Navbat bir nechta elementni FIFO deb ataladigan muayyan tartibda saqlaydi.
FIFO — First in, First Out (birinchi kirgan birinchi chiqadi) degani. FIFO’ni tasavvur qilish uchun navbatni supermarketda navbatda turgan odamlar deb o‘ylang. Navbatga birinchi turgan kishi birinchi bo‘lib to‘lov qilib, supermarketdan chiqib keta oladi. Informatika va dasturlashda elementlarni bunday tartibda joylashtirish FIFO deb ataladi.
Vektorlardan farqli ravishda navbatdagi elementlarga indeks raqamlari orqali murojaat qilinmaydi. Navbat elementlari oxiriga qo‘shilib, oldidan olib tashlangani uchun faqat old yoki orqa tomondagi elementga murojaat qilish mumkin.
Navbatdan foydalanish uchun <queue> sarlavha faylini qo‘shishingiz kerak:
// Include the queue library
#include <queue>
Navbat yaratish
Navbat yaratish uchun queue kalit so‘zidan foydalaning, burchakli qavslar <> ichida u saqlaydigan qiymatlar tipini, so‘ng navbat nomini ko‘rsating, masalan: queue<type>
queueName.
// Create a queue of strings called cars
queue<string> cars;
Eslatma: Navbat e’lon qilingandan keyin uning tipini (misolimizda string) o‘zgartirib bo‘lmaydi.
Eslatma: Vektorlardagidan farqli ravishda navbatga e’lon qilish paytida element qo‘shib bo‘lmaydi:
queue<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
Element qo‘shish
Navbatga element qo‘shish uchun uni e’lon qilgandan keyin .push() funksiyasidan foydalanishingiz mumkin.
.push() funksiyasi elementni navbat oxiriga qo‘shadi:
Misol
// Create a queue of strings
queue<string> cars;
// Add elements to the queue
cars.push("Volvo");
cars.push("BMW");
cars.push("Ford");
cars.push("Mazda");
Navbat quyidagicha ko‘rinishda bo‘ladi:
Volvo (front (first) element)
BMW
Ford
Mazda (back (last) element)
Navbat elementlariga murojaat qilish
Massivlar va vektorlardagidek navbat elementlariga indeks raqamlari orqali murojaat qilib bo‘lmaydi.
Navbatda faqat old yoki orqa tomondagi elementga mos ravishda .front() va .back() yordamida murojaat qilish mumkin:
Misol
// Access the front element (first and oldest)
cout << cars.front(); // Outputs "Volvo"
// Access the back element (last and newest)
cout << cars.back(); // Outputs "Mazda"
O‘zingiz sinab ko‘ring »
Old va orqa elementlarni o‘zgartirish
Old va orqa elementlar qiymatini o‘zgartirish uchun ham .front va .back funksiyalaridan foydalanishingiz mumkin:
Misol
// Change the value of the front element
cars.front() = "Tesla";
// Change the value of the back element
cars.back() = "VW";
// Access the front element
cout << cars.front(); // Now outputs "Tesla" instead of "Volvo"
// Access the back element
cout << cars.back(); // Now outputs "VW" instead of "Mazda"
O‘zingiz sinab ko‘ring »
Elementlarni olib tashlash
Navbatdan element olib tashlash uchun .pop() funksiyasidan foydalanishingiz mumkin.
Bu old tomondagi elementni (navbatga birinchi, ya’ni eng avval qo‘shilgan elementni) olib tashlaydi:
Misol
// Create a queue of strings
queue<string> cars;
// Add elements to the queue
cars.push("Volvo");
cars.push("BMW");
cars.push("Ford");
cars.push("Mazda");
// Remove the front element (Volvo)
cars.pop();
// Access the front element (Now BMW)
cout << cars.front();
O‘zingiz sinab ko‘ring »
Navbat o‘lchamini aniqlash
Navbatda nechta element borligini bilish uchun .size() funksiyasidan foydalaning:
Navbat bo‘shligini tekshirish
Navbat bo‘sh yoki bo‘sh emasligini aniqlash uchun .empty() funksiyasidan foydalaning.
.empty() funksiyasi navbat bo‘sh bo‘lsa
1 (true), aks holda 0 (false) qaytaradi:
Misol
queue<string> cars;
cout << cars.empty(); // Outputs 1 (The queue is empty)
O‘zingiz sinab ko‘ring »
Misol
queue<string> cars;
cars.push("Volvo");
cars.push("BMW");
cars.push("Ford");
cars.push("Mazda");
cout << cars.empty(); // Outputs 0 (not empty)
O‘zingiz sinab ko‘ring »
Steklar va navbatlar
Navbatlar ko‘pincha steklar bilan birga tilga olinadi — bu oldingi sahifada tasvirlangan o‘xshash ma’lumotlar tuzilmasi.
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
