mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 11:07:45 +00:00
AK: Enable fast path for removal by hash-compatible key in HashMap/Table
This commit is contained in:
parent
b429f9c7aa
commit
c673b7220a
2 changed files with 22 additions and 0 deletions
11
AK/HashMap.h
11
AK/HashMap.h
|
@ -63,6 +63,17 @@ public:
|
||||||
return false;
|
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 HashTableType = HashTable<Entry, EntryTraits, IsOrdered>;
|
||||||
using IteratorType = typename HashTableType::Iterator;
|
using IteratorType = typename HashTableType::Iterator;
|
||||||
using ConstIteratorType = typename HashTableType::ConstIterator;
|
using ConstIteratorType = typename HashTableType::ConstIterator;
|
||||||
|
|
|
@ -373,6 +373,17 @@ public:
|
||||||
return false;
|
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)
|
void remove(Iterator iterator)
|
||||||
{
|
{
|
||||||
VERIFY(iterator.m_bucket);
|
VERIFY(iterator.m_bucket);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue