Narzędzia użytkownika

Narzędzia witryny


opis_kontenera:queue

Queue

Szablon queue to jeden z adaptatorów kontenerów sekwencyjnych, czyli takich które przystosowują standardowe kontenery STL do specjalnych celów. Szablon klasy pozwala danej klasie (domyślnie deque) udostępniać typowy interfejs kolejki typu FIFO.

Szablon queue w odróżnieniu do deque nie pozwala na dostęp swobodny do elementów kolejki, ani na iteracje po kontenerze. Możliwe są podstawowe operacje: dodawanie elementu na koniec kolejki, usuwanie elementu z początku kolejki, sprawdzenie wartości początkowego i końcowego elementu, określenie liczby elementów oraz sprawdzenie czy kolejka jest pusta.

Interfejs kolejki z uwzględnieniem wewnętrznego interfejsu kolejki:

Kolejka zdefiniowana jest w pliku nagłówkowym queue:

#include<queue>

Deklaracja kolejki domyślnie zakłada użycie jako kontenera przechowującego elementy kontenera deque:

namespace std
{
  	template<typename _Tp, typename _Sequence = deque<_Tp> >
   	class queue;
}

gdzie: _Tp – typ przechowywanych elementów, _Sequence – parametr opcjonalny, mówi jaki kontener jest używany do przechowywania elementów.

Przykład użycia:

std::queue<int> liczby;              // przechowuje liczby całkowite, kontener deque
	                              // używany w celu przechowywania elementów
 
queue<int, std::list<int> > liczby;  // jak powyżej, tyle, że do
                                     // przechowywania elementów użyliśmy
				      // kontenera list

Definicje typu

Typ Opis
queue::value_typeOkreśla rodzaj elementów umieszczonych w kontenerze. Równoważne składowej container::value_type
queue::size_typeOkreśla rozmiar umieszczonych elementów. Równoważne składowej container::size_type
queue::container_typeOkreśla rodzaj kontenera.

Metody klasy Queue

Metoda Opis
explicit queue::queue()Konstruktor tworzący pustą kolejkę.
explicit queue::queue(const Container& c)Konstruktor tworzący kolejkę inicjalizowaną elementami umieszczonymi w kontenerze c. Kopiuje wszystkie elementy z tego kontenera.
bool queue::empty() constZwraca true gdy kolejka jest pusta, w przeciwnym wypadku zwraca false. Równoważna zapisowi: queue::size() == 0 ale może działać szybciej.
size_type queue::size() constZwraca liczbę elementów w kolejce. Aby sprawdzić czy kolejka jest pusta, używajmy queue::empty()
value_type& queue::front()Metoda zwraca referencję do elementu znajdującego się na początku kolejki. Zanim ją wywołamy należy upewnić się, czy w kolejce znajdują się jakieś elementy (queue::size > 0), gdyż w przypadku wywołania ich dla pustej kolejki, zachowanie jest nieokreślone.
const value_type& queue::front() constMetoda zwraca stałą referencję do elementu znajdującego się na początku kolejki. Zanim ją wywołamy należy upewnić się, czy w kolejce znajdują się jakieś elementy (queue::size > 0), gdyż w przypadku wywołania ich dla pustej kolejki, zachowanie jest nieokreślone.
value_type& queue::back()Metoda zwraca referencję do ostatniego elementu znajdującego się w kolejce. Zanim ją wywołamy należy upewnić się, czy w kolejce znajdują się jakieś elementy queue::size > 0), gdyż w przypadku wywołania ich dla pustej kolejki, zachowanie jest nieokreślone.
const value_type& queue::back() constMetoda zwraca stałą referencję do ostatniego elementu znajdującego się w kolejce. Zanim ją wywołamy należy upewnić się, czy w kolejce znajdują się jakieś elementy queue::size > 0), gdyż w przypadku wywołania ich dla pustej kolejki, zachowanie jest nieokreślone.
void queue::push(const value_type& x)Wstawia kopię elementu x na koniec kolejki
void queue::pop()Usuwa pierwszy element kolejki. Nie zwraca tego elementu, dlatego gdy chcemy go przetworzyć, to przed wywołaniem queue::pop() należy wywołać queue::front() w celu przetworzenie elementu. Zanim wywołamy queue::pop() należy upewnić się, czy w kolejce znajdują się jakieś elementy (queue::size > 0), gdyż w przypadku wywołania queue::pop() dla pustej kolejki, zachowanie jest nieokreślone.
OperatoryPrzypisywanie i porównywanie kolejek.

Operatory

bool operator==(const queue& c1, const queue& c2);
bool operator!=(const queue& c1, const queue& c2);
bool operator<(const queue& c1, const queue& c2);
bool operator>(const queue& c1, const queue& c2);
bool operator<=(const queue& c1, const queue& c2);
bool operator>=(const queue& c1, const queue& c2);

Porównywane kolejki są jednakowe, gdy:

  • zawierają taką samą liczbę elementów
  • wszystkie elementy są jednakowe
  • wszystkie elementy są umieszczone w tej samej kolejności

Odnośniki

opis_kontenera/queue.txt · ostatnio zmienione: 2008/12/12 11:15 przez mgugala