#include <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>. | |
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 ;
1.5.8