39 using value_type = std::pair<key_type, mapped_type>;
40 using container_type = std::list<value_type, allocator_type>;
41 using size_type =
typename container_type::size_type;
42 using difference_type =
typename container_type::difference_type;
43 using iterator =
typename container_type::iterator;
44 using const_iterator =
typename container_type::const_iterator;
45 using reverse_iterator = std::reverse_iterator<iterator>;
46 using const_reverse_iterator = std::reverse_iterator<const_iterator>;
48 using reference = value_type &;
49 using const_reference =
const value_type &;
50 using pointer =
typename std::allocator_traits<allocator_type>::pointer;
53 typename std::allocator_traits<allocator_type>::const_pointer;
57 return m_container.begin();
60 [[
nodiscard]] const_iterator begin()
const noexcept
62 return m_container.begin();
65 [[
nodiscard]] reverse_iterator rbegin()
noexcept
67 return m_container.rbegin();
70 [[
nodiscard]] const_reverse_iterator rbegin()
const noexcept
72 return m_container.rbegin();
77 return m_container.end();
80 [[
nodiscard]] const_iterator end()
const noexcept
82 return m_container.end();
85 [[
nodiscard]] reverse_iterator rend()
noexcept
87 return m_container.rend();
90 [[
nodiscard]] const_reverse_iterator rend()
const noexcept
92 return m_container.rend();
97 return m_container.empty();
100 [[
nodiscard]]
size_t size()
const noexcept
102 return m_currentSize;
105 [[
nodiscard]]
size_t max_size()
const noexcept
121 m_container.push_front(value_type(
key, value));
122 m_mapper[
key] = m_container.begin();
136 if (
it == m_container.end()) {
140 m_container.splice(m_container.begin(), m_container,
it);
141 mapperIt.value() = m_container.begin();
153 return (
it != m_container.end());
167 if (m_currentSize != 0) {
174 void setMaxSize(
const size_t maxSize)
182 for (
size_t i = 0; (
i <
diff) && !m_container.empty(); ++
i) {
183 auto lastIt = m_container.end();
190 if (m_currentSize != 0) {
199 if (m_currentSize <= m_maxSize) {
207 auto lastIt = m_container.end();
215 if (m_currentSize != 0) {
221 mutable container_type m_container;
222 size_t m_currentSize = 0;