mirror of
https://github.com/boostorg/unordered.git
synced 2025-11-12 21:49:51 +01:00
moved erase_if_impl from foa::table_core into foa::table
This commit is contained in:
@@ -1616,16 +1616,6 @@ public:
|
|||||||
return it;
|
return it;
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename Predicate>
|
|
||||||
std::size_t erase_if_impl(Predicate&& pr)
|
|
||||||
{
|
|
||||||
std::size_t s=size();
|
|
||||||
for_all_elements([&,this](group_type* pg,unsigned int n,element_type* p){
|
|
||||||
if(pr(type_policy::value_from(*p))) erase(pg,n,p);
|
|
||||||
});
|
|
||||||
return std::size_t(s-size());
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename F>
|
template<typename F>
|
||||||
void for_all_elements(F f)const
|
void for_all_elements(F f)const
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -420,9 +420,16 @@ public:
|
|||||||
using super::reserve;
|
using super::reserve;
|
||||||
|
|
||||||
template<typename Predicate>
|
template<typename Predicate>
|
||||||
friend std::size_t erase_if(table& x,Predicate pr)
|
friend std::size_t erase_if(table& x,Predicate&& pr)
|
||||||
{
|
{
|
||||||
return x.erase_if_impl(pr);
|
std::size_t s=size();
|
||||||
|
this->for_all_elements(
|
||||||
|
[&,this](group_type* pg,unsigned int n,element_type* p){
|
||||||
|
if(pr(const_cast<const value_type&>(type_policy::value_from(*p))){
|
||||||
|
this->erase(pg,n,p);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return std::size_t(s-size());
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
Reference in New Issue
Block a user