30 Ocak 2018 Salı

STL Veri Yapısı - Queue

Giriş
Şu satırı dahil ederiz.
#include <queue>
Priority Queue, Queue, Stack container adapter sınıfları olarak tabir edilirler. Bir FIFO kuyruk gibi aşağıdaki metodları destekler.
back()
front()
push_back()
pop_front()
Constructor - Default
Tanımlamak için altta kullanacağı container belirtilmeden aşağıdaki gibi yapılabilir.
std::queue<int> first;                 // empty queue
Bu durumda alttaki container bir dequeue olur.
template <class T,class Container=std::deque<T>> class queue;
Constructor - Container Type
Kullanılması arzu edilen container da belirtilebilir.
std::queue<int,std::list<int> > third;
Belirtilen container bir sequence container olmalıdır.
Container - The type of the underlying container to use to store the elements. The container must satisfy the requirements of SequenceContainer.
front metodu
Şöyle yaparız.
int i = queue.front();
pop metodu
Eğer kuyruk boş iken çağrılırsa davranışı tanımsızdır. Şöyle yaparız.
// Remove element from empty queue
queue.pop();
Diğer

container'a erişmek
1. Kalıtım
Açıklaması şöyle.
Stack and queue aren't containers. They are container adaptors. By design they do not expose raw access to the underlying container. But the underlying containers are serializable standard library containers (vector<> and deque<>, by default respectively). And the standard does specify that the implementation expose it as protected members
İsmi c olan bir alan şeklindedir.

Örnek
Şöyle yaparız.
template <typename... Args>
struct MyQueue : std::queue<Args...> {
  using base = std::queue<Args...>;
  using base::base;
  using base::operator=;

  template <typename Ar>
  void serialize(Ar& ar, unsigned /*version*/) { ar & base::c; }
};




Hiç yorum yok:

Yorum Gönder