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>;
itpp::Circular_Buffer::Circular_Buffer
Circular_Buffer()
Default constructor.
Definition circular_buffer.h:192

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 ;
itpp::randn
double randn(void)
Generates a random Gaussian (0,1) variable.
Definition random.h:831

Definition at line 92 of file circular_buffer.h.

## Constructor & Destructor Documentation

## Circular_Buffer() [1/3]

template<class T>

itpp::Circular_Buffer< T >::Circular_Buffer | ( |  | ) |

Default constructor.

Definition at line 192 of file circular_buffer.h.

Referenced by Circular_Buffer(), and operator=().

## Circular_Buffer() [2/3]

template<class T>

itpp::Circular_Buffer< T >::Circular_Buffer | ( | int | n | ) |

Create a Circular_Buffer of size `n`.

Definition at line 202 of file circular_buffer.h.

## Circular_Buffer() [3/3]

template<class T>

itpp::Circular_Buffer< T >::Circular_Buffer | ( | const Circular_Buffer< T > & | s | ) |

Create a copy of `s`.

Definition at line 211 of file circular_buffer.h.

References Circular_Buffer().

## ~Circular_Buffer()

template<class T>

itpp::Circular_Buffer< T >::~Circular_Buffer | ( |  | ) |

virtual

Default destructor.

Definition at line 224 of file circular_buffer.h.

## Member Function Documentation

## put() [1/3]

template<class T>

void itpp::Circular_Buffer< T >::put | ( | const T & | in | ) |

Write the element in to the buffer.

Definition at line 463 of file circular_buffer.h.

References get().

Referenced by set_size().

## put() [2/3]

template<class T>

void itpp::Circular_Buffer< T >::put | ( | const Vec< T > & | in | ) |

Write the vector of elements in to the circular buffer.

Definition at line 483 of file circular_buffer.h.

References get(), and itpp::Vec< Num_T >::size().

## put() [3/3]

template<class T>

void itpp::Circular_Buffer< T >::put | ( | const Array< T > & | in | ) |

Write the vector of elements in to the circular buffer.

Definition at line 505 of file circular_buffer.h.

References get(), and itpp::Array< T >::size().

## get() [1/4]

template<class T>

void itpp::Circular_Buffer< T >::get | ( | T & | out | ) |

Get the oldest element in the circular buffer.

Definition at line 230 of file circular_buffer.h.

References it_assert_debug.

Referenced by get(), put(), put(), and put().

## get() [2/4]

template<class T>

T itpp::Circular_Buffer< T >::get | ( |  | ) |

Get the oldest element in the circular buffer.

Definition at line 241 of file circular_buffer.h.

References get().

## get() [3/4]

template<class T>

void itpp::Circular_Buffer< T >::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.

Definition at line 250 of file circular_buffer.h.

References it_assert_debug, and itpp::Vec< Num_T >::set_size().

## get() [4/4]

template<class T>

void itpp::Circular_Buffer< T >::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.

Definition at line 273 of file circular_buffer.h.

References it_assert_debug, and itpp::Array< T >::set_size().

## peek() [1/7]

template<class T>

void itpp::Circular_Buffer< T >::peek | ( | T & | out | ) | const

Peek at the oldest element in the circular buffer, without removing it.

Definition at line 296 of file circular_buffer.h.

References it_assert_debug.

Referenced by peek().

## peek() [2/7]

template<class T>

T itpp::Circular_Buffer< T >::peek | ( |  | ) | const

Peek at the oldest element in the circular buffer, without removing it.

Definition at line 303 of file circular_buffer.h.

References peek().

## peek() [3/7]

template<class T>

void itpp::Circular_Buffer< T >::peek | ( | const int | index,
|  | T & | out ) const

Peek at the element with index index in the circular buffer, without removing it.

Definition at line 312 of file circular_buffer.h.

References it_assert_debug.

## peek() [4/7]

template<class T>

void itpp::Circular_Buffer< T >::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.

Definition at line 319 of file circular_buffer.h.

References it_assert_debug, and itpp::Vec< Num_T >::set_size().

## peek() [5/7]

template<class T>

void itpp::Circular_Buffer< T >::peek | ( | const ivec & | index,
|  | Vec< T > & | out ) const

Peek at the elements with index index in the circular buffer, without removing them.

Definition at line 341 of file circular_buffer.h.

References it_assert_debug, and itpp::Vec< Num_T >::set_size().

## peek() [6/7]

template<class T>

void itpp::Circular_Buffer< T >::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.

Definition at line 352 of file circular_buffer.h.

References it_assert_debug, and itpp::Array< T >::set_size().

## peek() [7/7]

template<class T>

void itpp::Circular_Buffer< T >::peek | ( | const ivec & | index,
|  | Array< T > & | out ) const

Peek at the elements with index index in the circular buffer, without removing them.

Definition at line 374 of file circular_buffer.h.

References it_assert_debug, and itpp::Array< T >::set_size().

## peek_reverse() [1/4]

template<class T>

void itpp::Circular_Buffer< T >::peek_reverse | ( | T & | out | ) | const

Peek at the latest element in the circular buffer, without removing it.

Definition at line 385 of file circular_buffer.h.

References it_assert_debug.

Referenced by peek_reverse(), and set_size().

## peek_reverse() [2/4]

template<class T>

T itpp::Circular_Buffer< T >::peek_reverse | ( |  | ) | const

Peek at the latest element in the circular buffer, without removing it.

Definition at line 400 of file circular_buffer.h.

References peek_reverse().

## peek_reverse() [3/4]

template<class T>

void itpp::Circular_Buffer< T >::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.

Definition at line 409 of file circular_buffer.h.

References it_assert_debug, and itpp::Vec< Num_T >::set_size().

## peek_reverse() [4/4]

template<class T>

void itpp::Circular_Buffer< T >::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.

Definition at line 436 of file circular_buffer.h.

References it_assert_debug, and itpp::Array< T >::set_size().

## clear()

template<class T>

void itpp::Circular_Buffer< T >::clear | ( |  | ) |

Empty the circular buffer.

Definition at line 526 of file circular_buffer.h.

Referenced by set_size().

## operator=()

template<class T>

void itpp::Circular_Buffer< T >::operator= | ( | const Circular_Buffer< T > & | s | ) |

Assignment operator.

Definition at line 563 of file circular_buffer.h.

References Circular_Buffer(), and set_size().

## size()

template<class T>

int itpp::Circular_Buffer< T >::size | ( |  | ) | const

inline

Returns the maximum number of data elements the circular buffer can store.

Definition at line 168 of file circular_buffer.h.

## nrof_elements()

template<class T>

int itpp::Circular_Buffer< T >::nrof_elements | ( |  | ) | const

inline

Returns the number of data elements currently stored in the circular buffer.

Definition at line 171 of file circular_buffer.h.

## set_size()

template<class T>

void itpp::Circular_Buffer< T >::set_size | ( | int | n,
|  | bool | copy = false )

Resizing a Circular_Buffer<T>.

Definition at line 574 of file circular_buffer.h.

References clear(), peek_reverse(), and put().

Referenced by operator=().

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

- itpp/base/circular_buffer.h

Generated on for IT++ by Doxygen 1.15.0