Programowanie w C++ – RPi – STL – Deque

Wprowadzenie.

Kolejka o dwóch końcach „deque” to kontener sekwencyjny. Kontener ten charakteryzuje się dynamiczną zmianą rozmiaru. Każdy element wektora ma określoną pozycję, która jest nadawana w momencie wstawienia kolejnego elementu do kontenera. W odróżnieniu od wektora, deque ma możliwość wstawiania elementu zarówno na końcu jak i początku kontenera. 

Zakres artykułu.

  • Właściwości kontenera
  • Program w C++
  • Plik Makefile
  • Testy

Właściwości kontenera

  • Możliwość relatywnie szybkiego dynamicznego dodawania, usuwania elementów na końcu jak i początku kontenera;
  • Kolejne elementy są przechowane w pamięci obok siebie, dzięki czemu prosty jest dostęp do grupy elementów przy zastosowaniu wskaźników;
  • Możliwość uzyskania dostępu bezpośrednio do każdego elementu.

Program w C++

Kod programu, który pozwoli na przetestowanie kontenera „Deque” zapisałem w pliku main.cpp i wygląda następująco.

#include <iostream>
#include <deque>

#define LICZBA_ELEMENTOW_BACK	5
#define LICZBA_ELEMENTOW_FRONT	7

using namespace std;

int main()
{
	int i = 0;
	deque<int> mojKontener;
	int wstawionaLiczbaElementow = 0;

	// Wstawianie elementów na końcu kontenera
	for(i=0; i<LICZBA_ELEMENTOW_BACK; i++)
	{
		mojKontener.push_back(i);
	}
	// Wstawianie elementów na początku kontenera
	for(i=0; i<LICZBA_ELEMENTOW_FRONT; i++)
	{
		mojKontener.push_front(i);
	}
	wstawionaLiczbaElementow = mojKontener.size();

	// Wyświetlenie kontenera
	for(i=0; i<wstawionaLiczbaElementow; i++)
	{
		cout << mojKontener[i] << endl;
	}
    return 0;
}

Plik Makefile

Plik Makefile wygląda następująco:

CC = g++
CFLAGS =
LIBS =

OBJ =\
        main.o

all: main

clean:
        rm -f *.o test

.c.o:
        $(CC) -c $(INCLUDES) $(CFLAGS) $<

main: $(OBJ)
        $(CC) $(OBJ) $(LIBS) -o test

Testy

Gdy już mamy wszystko przygotowane wówczas w konsoli wpisujemy polecenie:

$ make

Następnie uruchamiamy nasz program poleceniem:

$ ./test

Wynik jaki otrzymamy powinien wyglądać następująco:

6
5
4
3
2
1
0
0
1
2
3
4

Autor artykułu
Dominik Bednarski

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *