本节所列的算法是根据元素值或某一准则,在一个区间内移除某些元素。
这些算法并不能改变元素的数量,它们只是将原本置于后面的“不移除元素”向前移动,覆盖那些被移除的元素。
这些算法都返回逻辑上的新终点
移除某些特定元素
1.移除某序列内的元素
ForwardIterator
remove(ForwardIterator beg,ForwardIterator end,
const T& value)
ForwardIterator
remove_if(ForwardIterator beg,ForwardIterator end,
UnaryPredicate op)
1.remove()会移除区间[beg,end)中每一个“与value相等”的元素
2.remove_if()会移除区间[beg,end)中每一个“令以下一元判断式”: op(elem) 为true的元素。
下面程序示范remove()和remove_if()的用法:
1 #include "algostuff.hpp" 2 using namespace std; 3 4 int main() 5 { 6 vector<int> coll; 7 INSERT_ELEMENTS(coll,2,6); 8 INSERT_ELEMENTS(coll,4,9); 9 INSERT_ELEMENTS(coll,1,7); 10 PRINT_ELEMENTS(coll,"coll: "); 11 vector<int>::iterator pos; 12 pos=remove(coll.begin(),coll.end(),5); 13 PRINT_ELEMENTS(coll,"size not changed: "); 14 coll.erase(pos,coll.end()); 15 PRINT_ELEMENTS(coll,"size changed: "); 16 coll.erase(remove_if(coll.begin(),coll.end(), 17 bind2nd(less<int>(),4)),coll.end()); 18 PRINT_ELEMENTS(coll,"< 4 removed: "); 19 }