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
