summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
Diffstat (limited to 'src/core')
-rw-r--r--src/core/smallmap_type.hpp10
-rw-r--r--src/core/smallvec_type.hpp12
2 files changed, 5 insertions, 17 deletions
diff --git a/src/core/smallmap_type.hpp b/src/core/smallmap_type.hpp
index 44ace6b45..0bd9bd296 100644
--- a/src/core/smallmap_type.hpp
+++ b/src/core/smallmap_type.hpp
@@ -115,7 +115,8 @@ struct SmallMap : SmallVector<SmallPair<T, U>, S> {
inline void Erase(Pair *pair)
{
assert(pair >= this->Begin() && pair < this->End());
- SmallVector<Pair, S>::Erase(pair);
+ auto distance = pair - std::vector<Pair>::data();
+ std::vector<Pair>::erase(std::vector<Pair>::begin() + distance);
}
/**
@@ -126,11 +127,10 @@ struct SmallMap : SmallVector<SmallPair<T, U>, S> {
*/
inline bool Erase(const T &key)
{
- Pair *pair = this->Find(key);
- if (pair == this->End())
- return false;
+ auto pair = std::find(this->begin(), this->end(), key);
+ if (pair == this->end()) return false;
- SmallVector<Pair, S>::Erase(pair);
+ std::vector<Pair>::erase(pair);
return true;
}
diff --git a/src/core/smallvec_type.hpp b/src/core/smallvec_type.hpp
index 1ec336b73..b989d44c5 100644
--- a/src/core/smallvec_type.hpp
+++ b/src/core/smallvec_type.hpp
@@ -104,18 +104,6 @@ public:
}
/**
- * Removes given item from this vector
- * @param item item to remove
- * @note it has to be pointer to item in this map. It is overwritten by the last item.
- */
- inline void Erase(T *item)
- {
- assert(item >= this->Begin() && item < this->End());
- *item = std::vector<T>::back();
- std::vector<T>::pop_back();
- }
-
- /**
* Tests whether a item is present in the vector, and appends it to the end if not.
* The '!=' operator of T is used for comparison.
* @param item Item to test for