Skip to content

Dekyu (Deque)

C++ Dekyu

Oldingi sahifada navbatdagi elementlar oxiriga qo'shiladi va oldidan olib tashlanishini o'rgandingiz.

Dekyu (double-ended queue — ikki tomonlama navbat) esa yanada moslashuvchan bo'lib, elementlar ikkala uchidan (oldidan va orqasidan) qo'shilishi va olib tashlanishi mumkin. Shuningdek, elementlarga indeks raqamlari orqali kirish mumkin.

Dekyudan foydalanish uchun <deque> sarlavha faylini import qiling:

MISOL

cpp
// Dekyu kutubxonasini import qilish
#include <deque>

Dekyu yaratish

Dekyu yaratish uchun deque kalit so'zini ishlating: deque<tur> dekyuNomi.

MISOL

cpp
// Satrlarni saqlaydigan cars nomli dekyu yaratish
deque<string> cars;

E'lon vaqtida elementlar qo'shish mumkin:

MISOL

cpp
deque<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};

// Dekyu elementlarini chop etish
for (string car : cars) {
  cout << car << "\n";
}

Dekyu elementiga kirish

Dekyu elementiga kvadrat qavslar [] ichidagi indeks raqami orqali kirish mumkin. Dekyular 0 dan boshlab indekslanadi:

MISOL

cpp
deque<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};

cout << cars[0];  // Volvo chiqaradi
cout << cars[1];  // BMW chiqaradi

.front() va .back() funksiyalari orqali ham birinchi va oxirgi elementga kirish mumkin:

MISOL

cpp
deque<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};

cout << cars.front();
cout << cars.back();

.at() funksiyasi bilan belgilangan indeksdagi elementga kirish:

MISOL

cpp
deque<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};

cout << cars.at(1);
cout << cars.at(2);

ESLATMA

.at() funksiyasi ko'pincha kvadrat qavslardan afzal, chunki element chegaradan tashqarida bo'lsa istisno holat tashlaydi.


Dekyu elementini o'zgartirish

Indeks raqami yoki .at() funksiyasi orqali elementni o'zgartirish mumkin:

MISOL

cpp
deque<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};

cars[0] = "Opel";
cout << cars[0];  // Endi Volvo o'rniga Opel chiqaradi

Dekyu elementlarini qo'shish

.push_front() bilan boshiga va .push_back() bilan oxiriga element qo'shish mumkin:

MISOL

cpp
deque<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};

// Boshiga element qo'shish
cars.push_front("Tesla");

// Oxiriga element qo'shish
cars.push_back("VW");

Dekyu elementlarini olib tashlash

.pop_front() bilan boshidan va .pop_back() bilan oxiridan element olib tashlash mumkin:

MISOL

cpp
deque<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};

// Birinchi elementni olib tashlash
cars.pop_front();

// Oxirgi elementni olib tashlash
cars.pop_back();

Dekyu hajmi

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

MISOL

cpp
deque<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
cout << cars.size();  // 4 chiqaradi

Dekyu bo'sh yoki yo'qligini tekshirish

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

MISOL

cpp
deque<string> cars;
cout << cars.empty();  // 1 chiqaradi (dekyu bo'sh)

Dekyu bo'ylab tsikl

.size() funksiyasi bilan for tsikli yoki for-each tsikli yordamida dekyu bo'ylab aylanish mumkin:

MISOL

cpp
deque<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};

for (int i = 0; i < cars.size(); i++) {
  cout << cars[i] << "\n";
}

MISOL

cpp
deque<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};

for (string car : cars) {
  cout << car << "\n";
}

MASLAHAT

Iterator yordamida ham dekyular bo'ylab aylanish mumkin.