remove&erase
来源:互联网 发布:土豆客户端mac版 编辑:程序博客网 时间:2024/06/04 18:14
remove 算法描述:查找的得到第一个元素的位置,然后从此位置开始遍历容器,将后面的元素依次前移,跳过和value相同值的元素,也就是说,所有和value相同值的元素都会被覆盖,而其他的元素都会依次前移。最后remove返回"指向最后一个 '有用' 元素的iterator",但是在remove算法过程中,并没有修改原容器的size,以及end()。但是从逻辑角度看,最后的[ 从remove得到的iterator---_result, 容器的结尾end() ) 这个区间里面的元素已经没有意义了。所以这些元素不应该属于该容器了。remove算法能做的仅此而已,并没有删除这些无用的元素。
对于一个连续内存容器(vector、deque或者string),最好的办法是使用erase-remove习惯用法
c.erase(remove(c.begin(),c.end(),124),c.end());
#include <iostream>#include <cstdio>#include <string.h>#include <vector>#include <list>#include <deque>#include <algorithm>using namespace std;int main(){ string s; int a[10]={1,2,3,4,2,6,7,2,9,0}; list<int> lst; vector<int> v; deque<int> dq; v.insert(v.begin(),a,a+10); vector<int>::iterator it=remove(v.begin(),v.end(),2); for(int i=0;i<v.size();++i) cout<<v[i]<<" "; cout<<endl; v.erase(it,v.end()); for(int i=0;i<v.size();++i) cout<<v[i]<<" "; return 0;}
如果将移除的值改为判别式,则可以使用remove_if
#include <iostream>#include <cstdio>#include <string.h>#include <vector>#include <list>#include <deque>#include <algorithm>using namespace std;bool BadVal(int x){ return x%2;}int main(){ string s; int a[10]={1,2,3,4,5,6,7,8,9,0}; list<int> lst; vector<int> v; deque<int> dq; v.insert(v.begin(),a,a+10); vector<int>::iterator it=remove_if(v.begin(),v.end(),BadVal); for(int i=0;i<v.size();++i) cout<<v[i]<<" "; cout<<endl; v.erase(it,v.end()); for(int i=0;i<v.size();++i) cout<<v[i]<<" "; return 0;}
- remove&erase
- remove() and erase()
- Erase-remove惯用法
- STL-remove,erase
- Erase-remove惯用法
- STL remove和erase
- erase和remove
- erase() 和 remove()
- STL之erase,remove
- STL remove和erase
- Erase-remove 惯用法
- STL remove和erase
- STL remove和erase
- STL remove和erase
- stl remove 和 erase
- c++ remove() erase() 区别
- erase和remove区别
- Erase–remove idiom
- iBATIS
- 数据库学习书籍精选
- poj 1804Brainman(树状数组)
- SGU107. 987654321 problem 暴利找规律
- 1020. Tree Traversals (25)-PAT 题目1385:重建二叉树
- remove&erase
- C++四种强制转换
- GObject-based library
- matplotlib显示中文字体
- 大家好,由于我不常来博客,有事请E-mail:xyyddr@hotmail.com
- Java Thread 多线程 线程池 from 博客园 hoojo
- Sql日期时间格式转换
- hdu-I NEED A OFFER!(01背包)
- uva 699