1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-14 08:54:58 +00:00

AK: HashTable add a constructor that allows preallocation of capacity + Use in CppLexer. (#3147)

1. Add general utility to get array number of elements.
2. Add Needed API to AK::HashTable
3. Refactor CppLexer initialization
This commit is contained in:
Muhammad Zahalqa 2020-08-16 12:04:00 +03:00 committed by GitHub
parent fc276946fb
commit a68650a7b4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 166 additions and 135 deletions

View file

@ -111,7 +111,12 @@ private:
using Bucket = SinglyLinkedList<T>;
public:
HashTable() {}
HashTable() { }
HashTable(size_t capacity)
: m_buckets(new Bucket[capacity])
, m_capacity(capacity)
{
}
HashTable(const HashTable& other)
{
ensure_capacity(other.size());
@ -164,6 +169,15 @@ public:
HashSetResult set(const T&);
HashSetResult set(T&&);
template<typename U, size_t N>
void set_from(U (&from_array)[N])
{
for (size_t i = 0; i < N; ++i) {
set(from_array[i]);
}
}
bool contains(const T&) const;
void clear();