Navbatlar (Queues)
C++ Navbat
Navbat bir nechta elementni maxsus tartibda saqlaydi — FIFO.
FIFO — First In, First Out (Birinchi kirgan — birinchi chiqadi) degan ma'noni anglatadi. FIFO ni tasavvur qilish uchun, supermarketda navbatda turgan odamlarni o'ylang. Navbatda birinchi bo'lib turgan odam birinchi to'laydi va ketadi.
Vektorlardan farqli o'laroq, navbat elementlariga indeks raqamlari orqali kirish mumkin emas. Navbat elementlari oxiriga qo'shiladi va oldidan olib tashlanadi, shuning uchun faqat oldidagi yoki orqadagi elementga kirish mumkin.
Navbatdan foydalanish uchun <queue> sarlavha faylini import qiling:
MISOL
// Navbat kutubxonasini import qilish
#include <queue>Navbat yaratish
Navbat yaratish uchun queue kalit so'zini ishlating: queue<tur> navbatNomi.
MISOL
// Satrlarni saqlaydigan cars nomli navbat yaratish
queue<string> cars;ESLATMA
Navbatga vektorlar kabi e'lon vaqtida element qo'shish mumkin emas.
Element qo'shish
.push() funksiyasi navbatning oxiriga element qo'shadi:
MISOL
queue<string> cars;
cars.push("Volvo");
cars.push("BMW");
cars.push("Ford");
cars.push("Mazda");Navbat quyidagicha ko'rinadi:
Volvo (old (birinchi) element)
BMW
Ford
Mazda (orqa (oxirgi) element)Navbat elementlariga kirish
Navbatda faqat olddagi yoki orqadagi elementga kirish mumkin, .front() va .back() funksiyalari yordamida:
MISOL
// Olddagi elementga kirish (birinchi va eng eski)
cout << cars.front(); // "Volvo" chiqaradi
// Orqadagi elementga kirish (oxirgi va eng yangi)
cout << cars.back(); // "Mazda" chiqaradiOld va orqa elementlarni o'zgartirish
.front() va .back() funksiyalari yordamida old va orqa elementlarning qiymatini o'zgartirish mumkin:
MISOL
// Olddagi elementning qiymatini o'zgartirish
cars.front() = "Tesla";
// Orqadagi elementning qiymatini o'zgartirish
cars.back() = "VW";
cout << cars.front(); // Endi "Volvo" o'rniga "Tesla" chiqaradi
cout << cars.back(); // Endi "Mazda" o'rniga "VW" chiqaradiElement olib tashlash
.pop() funksiyasi navbatning oldidagi elementni (birinchi va eng eski) olib tashlaydi:
MISOL
queue<string> cars;
cars.push("Volvo");
cars.push("BMW");
cars.push("Ford");
cars.push("Mazda");
// Olddagi elementni olib tashlash (Volvo)
cars.pop();
// Olddagi elementga kirish (Endi BMW)
cout << cars.front();Navbat hajmi
.size() funksiyasi yordamida navbatdagi elementlar sonini bilish mumkin:
MISOL
cout << cars.size();Navbat bo'sh yoki yo'qligini tekshirish
.empty() funksiyasi navbat bo'sh bo'lsa 1 (true), bo'lmasa 0 (false) qaytaradi:
MISOL
queue<string> cars;
cout << cars.empty(); // 1 chiqaradi (navbat bo'sh)Steklar va navbatlar
Navbatlar ko'pincha Steklar bilan birga tilga olinadi, bu oldingi sahifada tasvirlangan o'xshash ma'lumot tuzilmasi.
