Skip to content

Navbatlar (Queues)

C++ Navbat

Navbat bir nechta elementni maxsus tartibda saqlaydi — FIFO.

FIFOFirst 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

cpp
// Navbat kutubxonasini import qilish
#include <queue>

Navbat yaratish uchun queue kalit so'zini ishlating: queue<tur> navbatNomi.

MISOL

cpp
// 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

cpp
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)

Navbatda faqat olddagi yoki orqadagi elementga kirish mumkin, .front() va .back() funksiyalari yordamida:

MISOL

cpp
// Olddagi elementga kirish (birinchi va eng eski)
cout << cars.front();  // "Volvo" chiqaradi

// Orqadagi elementga kirish (oxirgi va eng yangi)
cout << cars.back();  // "Mazda" chiqaradi

Old va orqa elementlarni o'zgartirish

.front() va .back() funksiyalari yordamida old va orqa elementlarning qiymatini o'zgartirish mumkin:

MISOL

cpp
// 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" chiqaradi

Element olib tashlash

.pop() funksiyasi navbatning oldidagi elementni (birinchi va eng eski) olib tashlaydi:

MISOL

cpp
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();

.size() funksiyasi yordamida navbatdagi elementlar sonini bilish mumkin:

MISOL

cpp
cout << cars.size();

.empty() funksiyasi navbat bo'sh bo'lsa 1 (true), bo'lmasa 0 (false) qaytaradi:

MISOL

cpp
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.