void consolidate() { m_main.erase_removed(); for (const auto& element : m_extra) { m_main.set(element.first, element.second); } m_extra.clear(); m_main.sort(); }
void sort() final { m_main.sort(); }
void clear() final { m_main.clear(); m_extra.clear(); }
void dump_as_list(const int fd) final { consolidate(); m_main.dump_as_list(fd); }
void remove(const TId id, const TValue value) { m_main.remove(id, value); m_extra.remove(id, value); }
void unsorted_set(const TId id, const TValue value) { m_main.set(id, value); }
std::pair<iterator, iterator> get_all(const TId id) { auto result_main = m_main.get_all(id); auto result_extra = m_extra.get_all(id); return std::make_pair(iterator(result_main.first, result_main.second, result_extra.first, result_extra.second), iterator(result_main.second, result_main.second, result_extra.second, result_extra.second)); }
size_t used_memory() const final { return m_main.used_memory() + m_extra.used_memory(); }
void reserve(const size_t size) { m_main.reserve(size); }
size_t size() const final { return m_main.size() + m_extra.size(); }
void sort() override final { m_main.sort(); }
void clear() override final { m_main.clear(); m_extra.clear(); }
void dump_as_list(int fd) { consolidate(); m_main.dump_as_list(fd); }
size_t size() const override final { return m_main.size() + m_extra.size(); }