28 listopada 2017

Kolejka FIFO w C++

Kategoria: C++ Autor: FX

W języku C++ istnieją wzorce do obsługi różnego rodzaju kolejek. Poniższy przykład pokazuje jak używać kolejki FIFO (first in, first out).

Uwaga! Stare kompilatory (standard C++ 98) zamiast metody emplace() używają push(). W nowych można używać obu metod, różnica w działaniu jest istotna z punktu widzenia zaawansowanych użytkowników, których ten przykład raczej nie zainteresuje.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
#include <queue>

using namespace std;

void memoryInfo(queue <double> kolejka)
{
        cout << "Rozmiar kolejki FIFO: "
                << kolejka.size()
                << ", w bajtach: "
                << kolejka.size() * sizeof(double)
                << endl;
}


int main(void)
{

        queue <double> ramkaFifo;

        memoryInfo(ramkaFifo); //wypisz informacje o zajętej pamięci
        ramkaFifo.emplace(3.14); //dodajemy trzy liczby
        ramkaFifo.emplace(6.1);
        ramkaFifo.emplace(-19.1);
        memoryInfo(ramkaFifo);

        while (!ramkaFifo.empty())
        {
                double pierwszyWKolejce = ramkaFifo.front(); //pobieramy pierwszy w kolejce
                cout << "Zdejmuje element: " << pierwszyWKolejce << endl;
                ramkaFifo.pop(); //wywalamy pierwszy z kolejki FIFO (zgodnie z zasadą first in first out)
                memoryInfo(ramkaFifo); //wypisz informacje o rozmiarze kolejki C++
        }
        return EXIT_SUCCESS;
}

Komentowanie wyłączone.