Program Listing for File erase_if.hpp¶
↰ Return to documentation for file (include/uitsl/polyfill/impl/erase_if.hpp)
#pragma once
#ifndef UITSL_POLYFILL_IMPL_ERASE_IF_HPP_INCLUDE
#define UITSL_POLYFILL_IMPL_ERASE_IF_HPP_INCLUDE
#include <algorithm>
#include <unordered_map>
namespace std {
template< typename... Args, typename Pred >
size_t erase_if( std::unordered_map<Args...>& 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();
}
template< typename... Args, typename Pred >
size_t erase_if( std::vector<Args...>& c, Pred pred ) {
auto it = std::remove_if(c.begin(), c.end(), pred);
const auto r = std::distance(it, c.end());
c.erase(it, c.end());
return r;
}
} // namespace std
#endif // #ifndef UITSL_POLYFILL_IMPL_ERASE_IF_HPP_INCLUDE