AK: Enable fast path for removal by hash-compatible key in HashMap/Table

This commit is contained in:
Hendiadyoin1 2021-12-15 15:18:30 +01:00 committed by Brian Gianforcaro
parent b429f9c7aa
commit c673b7220a
2 changed files with 22 additions and 0 deletions

View file

@ -63,6 +63,17 @@ public:
return false;
}
template<Concepts::HashCompatible<K> Key>
requires(IsSame<KeyTraits, Traits<K>>) bool remove(Key const& key)
{
auto it = find(key);
if (it != end()) {
m_table.remove(it);
return true;
}
return false;
}
using HashTableType = HashTable<Entry, EntryTraits, IsOrdered>;
using IteratorType = typename HashTableType::Iterator;
using ConstIteratorType = typename HashTableType::ConstIterator;

View file

@ -373,6 +373,17 @@ public:
return false;
}
template<Concepts::HashCompatible<T> K>
requires(IsSame<TraitsForT, Traits<T>>) bool remove(K const& value)
{
auto it = find(value);
if (it != end()) {
remove(it);
return true;
}
return false;
}
void remove(Iterator iterator)
{
VERIFY(iterator.m_bucket);