Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Opracował: Piotr DejaVu Szawdyński
Biblioteki C/C++

circular_buffer

[szablon klasy] Kontener przechowujący nie więcej niż określoną liczbę elementów, zapewniający przy tym optymalną gospodarkę pamięci.

Składnia

C/C++
#include <boost/circular_buffer.hpp>

namespace boost
{
   
    template < class T, class Alloc >
    class circular_buffer
    {
        //...
    };
   
}

Opis szczegółowy

Kontener przechowujący nie więcej niż określoną liczbę elementów, zapewniający przy tym optymalną gospodarkę pamięci. Niniejszy kontener jest przykładem zastosowania wzorca projektowego producent-konsumer.

Dodatkowe informacje

Niniejsze pojęcie jeszcze nie zostało wyczerpująco przez nas opracowane. Więcej informacji na temat niniejszego hasła znajdziesz pod adresem http://www.boost.org/doc/libs/1_37_0/libs/circular_buffer/doc/circular_buffer.html.

Przykład

C/C++
#include <boost/circular_buffer.hpp>

int main()
{
    //Tworzy kontener o pojemności 3 elementów:
    boost::circular_buffer < int > cb( 3 );
   
    //Dodaje elementy do kontenera:
    cb.push_back( 1 );
    cb.push_back( 2 );
    cb.push_back( 3 );
   
    int a = cb[ 0 ]; // a == 1
    int b = cb[ 1 ]; // b == 2
    int c = cb[ 2 ]; // c == 3
   
    //Kontener jest pełny, więc nastąpi nadpisanie
    //elementów, które znajdują się na jego początku:
    cb.push_back( 4 ); //Nadpisanie wartości 1 wartością 4.
    cb.push_back( 5 ); //Nadpisanie wartości 2 wartością 5.
   
   
    //Bufor zawiera teraz wartości: 3, 4, 5.
    a = cb[ 0 ]; // a == 3
    b = cb[ 1 ]; // b == 4
    c = cb[ 2 ]; // c == 5
   
    //Elementy mogą być usuwane z początku
    //kontenera jak również z jego końca:
    cb.pop_back(); //Wartość 5 jest usuwana.
    cb.pop_front(); //Wartość 3 jest usuwana.
   
    int d = cb[ 0 ]; // d == 4
   
    return 0;
}

Linki zewnętrzne