4.6 Deque (Çift Uçlu Kuyruk)

C++ dilinde deque (double-ended queue), hem başından hem de sonundan eleman ekleyip çıkarabileceğiniz bir veri yapısıdır. Deque'ler, hem FIFO (First In, First Out - İlk Giren İlk Çıkar) hem de LIFO (Last In, First Out - Son Giren İlk Çıkar) mantığına göre çalışabilir. Bu özellikleri sayesinde, çeşitli uygulamalarda esneklik sağlar.

Deque'in Temel Özellikleri

  1. Çift Uçlu Yapı: Elemanlar, hem ön (front) hem de arka (back) uçlardan eklenip çıkarılabilir.

  2. Dinamik Boyutlandırma: Deque, dinamik olarak boyutlandırılabilir. Yani, eleman ekledikçe boyutu otomatik olarak büyür.

  3. Rastgele Erişim: Deque, elemanlara rastgele erişim sağlar, bu da belirli bir indeksteki elemana doğrudan erişim imkanı sunar.

Deque Kullanımı

C++'ta deque kullanmak için #include <deque> kütüphanesini dahil etmeniz gerekmektedir. Aşağıda deque'in temel kullanımına dair örnekler bulunmaktadır.

Deque Oluşturma ve Eleman Ekleme

#include <iostream>
#include <deque>

int main() {
    // Deque oluşturma
    std::deque<int> deq;

    // Eleman ekleme
    deq.push_back(10); // Arka uca ekleme
    deq.push_front(20); // Ön uca ekleme
    deq.push_back(30);

    // Deque elemanlarını yazdırma
    std::cout << "Deque elemanları: ";
    for (const int& elem : deq) {
        std::cout << elem << " ";
    }
    std::cout << std::endl;

    return 0;
}

Eleman Çıkarma

Deque'den eleman çıkarmak için pop_back() ve pop_front() fonksiyonları kullanılır.

#include <iostream>
#include <deque>

int main() {
    // Deque oluşturma
    std::deque<int> deq;
    deq.push_back(10);
    deq.push_back(20);
    deq.push_back(30);

    // Deque'den eleman çıkarma
    std::cout << "Deque'den çıkarılan ön eleman: " << deq.front() << std::endl;
    deq.pop_front(); // Ön uçtan çıkar

    std::cout << "Deque'den çıkarılan arka eleman: " << deq.back() << std::endl;
    deq.pop_back(); // Arka uçtan çıkar

    std::cout << "Kalan elemanlar: ";
    for (const int& elem : deq) {
        std::cout << elem << " ";
    }
    std::cout << std::endl;

    return 0;
}

Rastgele Erişim

Deque'deki elemanlara indeks numarasıyla erişim mümkündür.

#include <iostream>
#include <deque>

int main() {
    // Deque oluşturma
    std::deque<int> deq = {10, 20, 30, 40};

    // Rastgele erişim
    std::cout << "2. indeksdeki eleman: " << deq[2] << std::endl; // 30

    return 0;
}

Sonuç

C++ Deque, esnekliği sayesinde birçok uygulama için yararlı bir veri yapısıdır. Hem ön hem de arka uçlardan eleman ekleyip çıkarabilme özelliği, onu özellikle dinamik veri yapıları için uygun hale getirir.

Last updated