29 : m_valueBuffer(size), m_size{size} {}
41 size_t curSize = m_orderedValues.size();
45 if (curSize > m_size) {
46 m_orderedValues.erase(std::find(m_orderedValues.begin(),
47 m_orderedValues.end(),
48 m_valueBuffer.pop_back()));
53 m_valueBuffer.push_front(next);
55 if (curSize % 2 != 0) {
57 return m_orderedValues[curSize / 2];
60 return (m_orderedValues[curSize / 2 - 1] + m_orderedValues[curSize / 2]) /
70 constexpr T
LastValue()
const {
return m_valueBuffer.front(); }
76 m_orderedValues.clear();
77 m_valueBuffer.reset();
82 std::vector<T> m_orderedValues;
This is a simple circular buffer so we don't need to "bucket brigade" copy old values.
Definition circular_buffer.h:20
std::vector< T >::iterator insert_sorted(std::vector< T > &vec, T const &item)
Definition Algorithm.h:16