diff --git a/src/Collections/StringViewDictionary.hpp b/src/Collections/StringViewDictionary.hpp index 5a62992..36a6969 100644 --- a/src/Collections/StringViewDictionary.hpp +++ b/src/Collections/StringViewDictionary.hpp @@ -108,7 +108,12 @@ namespace ArbUt { inline void Remove(const StringView& key) { _map.erase(key); } /// @brief Removes an item with a certain key hash from the dictionary - inline void Remove(u32 keyHash) { _map.erase(keyHash); } + inline void Remove(u32 keyHash) { + auto find = _map.find(keyHash); + if (find != _map.end()) { + _map.erase(find->first); + } + } /// @brief Returns the number of items in the dictionary. [[nodiscard]] inline size_t Count() const noexcept { return _map.size(); } diff --git a/tests/DictionaryTests.cpp b/tests/DictionaryTests.cpp index 45229cb..ad02aa8 100644 --- a/tests/DictionaryTests.cpp +++ b/tests/DictionaryTests.cpp @@ -116,6 +116,8 @@ TEST_CASE("Create StringViewDictionary, insert values, get values by hash") { dic.Insert("zet"_cnc, 2000); CHECK(dic.GetFromHash("bar"_cnc) == 100); + dic.Remove("zet"_cnc.GetHash()); + CHECK(dic.Count() == 2); } #endif \ No newline at end of file