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;
}
#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; }
#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.