7#include <initializer_list>
14template<
class T,
size_t N>
19 Ring(std::initializer_list<T> list) { std::copy(list.begin(), list.end(), array_); }
31 T&
front() {
return array_[first_]; }
32 const T&
front()
const {
return array_[first_]; }
35 return array_[(first_ + i) % N];
39 return array_[(first_ + i) % N];
50 auto res = array_[first_];
51 array_[first_] = item;
52 first_ = (first_ + 1) % N;
59 swap(r1.array_, r2.array_);
60 swap(r1.first_, r2.first_);
64 std::array<T, N> array_;
74 Ring(std::initializer_list<T> list)
75 : item_(*list.begin()) {}
88 const T&
front()
const {
return item_; }
111 swap(r1.item_, r2.item_);
124 Ring(std::initializer_list<T> list) { std::copy(list.begin(), list.end(), array_); }
137 const T&
front()
const {
return array_[0]; }
152 auto res = array_[0];
153 array_[0] = array_[1];
161 swap(r1.array_, r2.array_);
165 std::array<T, 2> array_;
Ring & operator=(Ring other) noexcept
Ring(const Ring &)=default
const T & operator[](size_t i) const
friend void swap(Ring &r1, Ring &r2) noexcept
Ring(std::initializer_list< T > list)
const T & operator[](size_t i) const
Ring & operator=(Ring other) noexcept
friend void swap(Ring &r1, Ring &r2) noexcept
Ring(std::initializer_list< T > list)
A ring buffer with N elements.
Ring & operator=(Ring other) noexcept
const T & operator[](size_t i) const
T put(T item)
Puts item into buffer.
friend void swap(Ring &r1, Ring &r2) noexcept
Ring(std::initializer_list< T > list)