Added c++20 polyfill: erase_if for std::set

This commit is contained in:
hrkrshnn 2021-03-29 11:17:49 +02:00
parent 76dd9dcc8a
commit 3c9a45987a

View File

@ -49,4 +49,19 @@ erase_if(std::unordered_map<Key, T, Hash, KeyEqual, Alloc>& _c, Pred _pred)
return old_size - _c.size();
}
// Taken from https://en.cppreference.com/w/cpp/container/set/erase_if
template<class Key, class Compare, class Alloc, class Pred>
typename std::set<Key,Compare,Alloc>::size_type
erase_if(std::set<Key,Compare,Alloc>& c, Pred pred)
{
auto old_size = c.size();
for (auto i = c.begin(), last = c.end(); i != last; )
if (pred(*i))
i = c.erase(i);
else
++i;
return old_size - c.size();
}
}