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