RingBuffer#

Source file#

ChaiGO container/adapter/ring_buffer

Interface#

template<ContainerElement T, SequenceContainer Container>
class RingBuffer#

A fix sized circular buffer.

The term circular buffer (also called a ring or cyclic buffer) refers to an area in memory which is used to store incoming data. When the buffer is filled, new data is written starting at the beginning of the buffer and overwriting the old.

Underlying container must support operations begin(), end(), size(), resize(), front(), back(). In particular, Vector can be used. Array is not supported now (not support resize()).q

模板参数
  • T – Type of element. Required to be a complete type.

  • Container – Type of the underlying container to use to store the elements.

Public Types

using value_type = typename Container::value_type#
using reference = typename Container::reference#
using const_reference = typename Container::const_reference#
using size_type = typename Container::size_type#
using difference_type = typename Container::difference_type#
using iterator = CircularIterator<Container>#
using const_iterator = CircularConstIterator<Container>#
using reverse_iterator = std::reverse_iterator<iterator>#
using const_reverse_iterator = std::reverse_iterator<const_iterator>#

Public Functions

constexpr RingBuffer(size_type bufferSize = 0) noexcept#
constexpr RingBuffer(const Container &otherContainer) noexcept#
constexpr RingBuffer(const RingBuffer &other) noexcept#
constexpr RingBuffer(RingBuffer &&other) noexcept#
constexpr RingBuffer(std::initializer_list<T> ilist)#
~RingBuffer() = default#
constexpr RingBuffer &operator=(const RingBuffer &other) noexcept#
constexpr RingBuffer &operator=(RingBuffer &&other) noexcept#
constexpr RingBuffer &operator=(std::initializer_list<T> ilist) noexcept#
constexpr void assign(std::initializer_list<T> ilist)#
template<std::input_iterator InputIt>
constexpr void assign(InputIt first, InputIt last)#
constexpr iterator begin() noexcept#
constexpr iterator end() noexcept#
constexpr const_iterator begin() const noexcept#
constexpr const_iterator end() const noexcept#
constexpr const_iterator cbegin() const noexcept#
constexpr const_iterator cend() const noexcept#
constexpr reverse_iterator rbegin() noexcept#
constexpr reverse_iterator rend() noexcept#
constexpr const_reverse_iterator rbegin() const noexcept#
constexpr const_reverse_iterator rend() const noexcept#
constexpr const_reverse_iterator crbegin() const noexcept#
constexpr const_reverse_iterator crend() const noexcept#
constexpr bool empty() const noexcept#
constexpr bool full() const noexcept#
constexpr size_type size() const noexcept#
constexpr size_type max_size() const noexcept#
constexpr size_type capacity() const noexcept#
constexpr void resize(size_type new_size)#
constexpr void reserve(size_type new_capacity)#
constexpr reference operator[](size_type pos)#
constexpr const_reference operator[](size_type pos) const#
constexpr reference front()#
constexpr const_reference front() const#
constexpr reference back()#
constexpr const_reference back() const#
constexpr void push_back(const value_type &value = value_type())#
constexpr void push_front(const value_type &value = value_type())#
constexpr void pop_back()#
constexpr void pop_front()#
constexpr iterator insert(const_iterator pos, const value_type &value)#
constexpr iterator insert(const_iterator pos, size_type count, const value_type &value)#
constexpr iterator insert(const_iterator pos, std::initializer_list<T> ilist)#
template<std::input_iterator InputIt>
constexpr iterator insert(const_iterator pos, InputIt first, InputIt last)#
constexpr iterator erase(const_iterator pos)#
constexpr iterator erase(const_iterator first, const_iterator last)#
constexpr void swap(RingBuffer &other)#
constexpr void clear() noexcept#