From a2024cfb692fe04ec093aba3dd7e3df5cc5861eb Mon Sep 17 00:00:00 2001 From: Eli Youngs Date: Fri, 9 Dec 2022 00:29:36 -0800 Subject: [PATCH] AK: Support popping an arbitrary element from a HashTable --- AK/HashTable.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/AK/HashTable.h b/AK/HashTable.h index b855eb881e..d4238aafaf 100644 --- a/AK/HashTable.h +++ b/AK/HashTable.h @@ -442,6 +442,24 @@ public: return removed_count; } + T pop() + { + VERIFY(!is_empty()); + T element; + if constexpr (IsOrdered) { + element = *m_collection_data.tail->slot(); + } else { + for (size_t i = 0; i < m_capacity; ++i) { + if (is_used_bucket(m_buckets[i].state)) { + element = *m_buckets[i].slot(); + break; + } + } + } + remove(element); + return element; + } + private: void insert_during_rehash(T&& value) {