itpp::Circular_Buffer< T > Class Template Reference

General circular buffer class. More...

`#include <itpp/base/circular_buffer.h>`

## Public Member Functions

| Circular_Buffer ()
| Default constructor.
| Circular_Buffer (int n)
| Create a Circular_Buffer of size `n`.
| Circular_Buffer (const Circular_Buffer< T > &s)
| Create a copy of `s`.
virtual | ~Circular_Buffer ()
| Default destructor.
void | put (const T &in)
| Write the element in to the buffer.
void | put (const Vec< T > &in)
| Write the vector of elements in to the circular buffer.
void | put (const Array< T > &in)
| Write the vector of elements in to the circular buffer.
void | get (T &out)
| Get the oldest element in the circular buffer.
T | get ()
| Get the oldest element in the circular buffer.
void | get (Vec< T > &out, const int N=-1)
| Get the N oldest element in the circular buffer. `N=-1` returns all elements in the buffer.
void | get (Array< T > &out, const int N=-1)
| Get the N oldest element in the circular buffer. `N=-1` returns all elements in the buffer.
void | peek (T &out) const
| Peek at the oldest element in the circular buffer, without removing it.
T | peek () const
| Peek at the oldest element in the circular buffer, without removing it.
void | peek (const int index, T &out) const
| Peek at the element with index index in the circular buffer, without removing it.
void | peek (Vec< T > &out, const int N=-1) const
| Peek at the N first elements of the circular buffer, without removing them. `N=-1` peeks all elements in the buffer.
void | peek (const ivec &index, Vec< T > &out) const
| Peek at the elements with index index in the circular buffer, without removing them.
void | peek (Array< T > &out, const int N=-1) const
| Peek at the N first elements of the circular buffer, without removing them. `N=-1` peeks all elements in the buffer.
void | peek (const ivec &index, Array< T > &out) const
| Peek at the elements with index index in the circular buffer, without removing them.
void | peek_reverse (T &out) const
| Peek at the latest element in the circular buffer, without removing it.
T | peek_reverse () const
| Peek at the latest element in the circular buffer, without removing it.
void | peek_reverse (Vec< T > &out, const int N=-1) const
| Peek at the N latest elements of the circular buffer in reverse order, without removing them. `N=-1` returns all elements in the buffer.
void | peek_reverse (Array< T > &out, const int N=-1) const
| Peek at the N latest elements of the circular buffer in reverse order, without removing them. `N=-1` returns all elements in the buffer.
void | clear ()
| Empty the circular buffer.
void | operator= (const Circular_Buffer< T > &s)
| Assignment operator.
int | size () const
| Returns the maximum number of data elements the circular buffer can store.
int | nrof_elements () const
| Returns the number of data elements currently stored in the circular buffer.
void | set_size (int n, bool copy=false)
| Resizing a Circular_Buffer<T>.

## Detailed Description

### template<class T>
class itpp::Circular_Buffer< T >

General circular buffer class.

This class is a general circular buffer class for arbitrary types.

For rarely used types you will need to instantiate the class by

template class Circular_Buffer<type>;

The following example shows how to define a Circular_Buffer of doubles:

vec a = randn(3);
vec b = randn(8);
vec out_vec;
Array <double> out_array;
Circular_Buffer<double> cb1(10);
//Put the elements of a to the buffer
cb1.put(a);
//Vector output: Peek at the two oldest elements of the buffer (the two first extracted)
cb1.peek(out_vec,2);
cout << "peek(out_vec,2) = " << out_vec << ": display 2 first elements of the buffer, without affecting the content" << endl;
//Vector output: Peek at all elements of the buffer in reverse order
cb1.peek_reverse(out_vec);
cout << "peek_reverse(out_vec,-1) = " << out_vec << ": display buffer, without affecting the content" << endl;
//Array output: Peek at all elements of the buffer in reverse order
cb1.peek_reverse(out_array);
cout << "peek_reverse(out_array,-1) = " << out_array << ": display buffer, without affecting the content" << endl;
//Put the elements of \c b to the buffer
cb1.put(b);
//Extract the oldest element of the buffer
cb1.get(out_vec,1);
cout << "get(out_vec,1) = " << out_vec << endl ;
//Extract all element of the buffer
cb1.get(out_vec);
cout << "get(out_vec) = " << out_vec << endl ;

Definition at line 92 of file circular_buffer.h.

The documentation for this class was generated from the following file:

- itpp/base/circular_buffer.h

Generated on Thu Mar 20 2014 12:26:45 for IT++ by Doxygen 1.8.6