vector中erase和remove_if的配合使用
erase
>>vector容器函数汇总>>erase();
remove_if
void remove_if( UnPred pr );
forward_iterator remove_if( forward_iterator start, forward_iterator end, Predicate p );
使用代码
bool isZero(int num){return num == 0;}
int main(){
vector<int> v{1,2,0,3,4,0,0,5,6,7,8,9,0,0,8,0,9};
remove_if(v.begin(),v.end(),isZero);
for(vector<int>::iterator it = v.begin();it!=v.end();it++)
cout<<*it<<" ";
return 0;
}
vector<int> v{1,2,0,3,4,0,0,5,6,7,8,9,0,0,8,0,9};
v.erase(remove_if(v.begin(),v.end(),isZero),v.end());
c++20中的erase_if
void erase(std::vector<T,Alloc>& c, const U& value);
void erase_if(std::vector<T,Alloc>& c, Pred pred);
1) 从容器中擦除所有比较等于 value 的元素。等价于
c.erase(std::remove(c.begin(), c.end(), value), c.end()); 。
2) 从容器中擦除所有满足 pred 的元素。等价于
c.erase(std::remove_if(c.begin(), c.end(), pred), c.end()); 。
bool isZero(int x){return (x == 0);}
vector<int> v{0,1,2,0,3,0,4,0,0,9};
erase(v,3);
for(vector<int>::iterator it = v.begin();it!=v.end();it++)
cout<<*it<<" ";
erase_if(v,isZero);
for(vector<int>::iterator it = v.begin();it!=v.end();it++)
cout<<*it<<" ";
- ——————END-2022-02-11——————
- 个人学习笔记,如有纰漏,敬请指正。
- 感谢您的阅读。