您的位置:首页 > 其它

STL算法库-删除算法

2016-01-04 08:22 239 查看
一、remove

原型:remove(iterator first,iterator last,const T& val)

定义:移除所有值到等于val的元素,函数返回删除后的序列的末尾位置,序列的大小不变,用最后一个元素进行补齐

原型:remove_if(iterator first,iterator last,Pred pr)

定义:移除所有使得pr值为true的元素,函数返回删除后序列的末尾位置,序列的大小不变,用最后一个元素进行补齐

二、remove_copy

原型:remove_copy(iterator1 first,iterator1 last,iterator2 dest,const T& value)

定义:在复制的过程中移除所有值等于value的元素

原型:remove_copy(iterator1 first,iterator1 last,iterator2 dest,Pred pr)

定义:在复制过程中移除所有使得pr为ture的元素

三、unique

原型:unique(iterator first,iterator last)

定义:移除区间中的连续重复元素

原型:unique(iterator first,iterator last,Compare comp)

定义:移除区间中连续的使得comp为true的元素

四、unique_copy

原型;unique(iterator1 first,iterator1 last,iterator2 dest)

定义:复制时移除区间中的连续重复元素

原型:unique(iterator1 first,iterator1 last,iterator2 dest,Compare comp)

定义:复制时移除区间中连续的使得comp为true的元素

示例代码:

#include "stdafx.h"
#include "iostream"
#include "algorithm"
#include "functional"
#include "iterator"
#include "vector"
using namespace std;
bool mylessthan(int ele1,int ele2)
{
if(ele1>3||ele2>3)
return true;
return false;
}
int _tmain(int argc, _TCHAR* argv[])
{
int source[]={1,4,4,6,1,2,2,3,1,6,6,6,5,7,5,4,4};
int num=sizeof(source)/sizeof(int);
vector<int> l1,lll(num,0);
vector<int> l2(num,0),l3(num,0);
vector<int>::iterator it1;
l1.assign(source,source+num);
cout<<"the original vector l1 is as below"<<endl;
copy(l1.begin(),l1.end(),ostream_iterator<int>(cout," "));
cout<<endl;
cout<<"移?除y元a素?1:"<<endl;
it1=remove(l1.begin(),l1.end(),1);
l1.erase(it1,l1.end());
copy(l1.begin(),l1.end(),ostream_iterator<int>(cout," "));
cout<<endl;
cout<<"移?除y所?有D大?于?的?元a素?"<<endl;
it1=remove_if(l1.begin(),l1.end(),bind2nd(greater<int>(),6));
l1.erase(it1,l1.end());
copy(l1.begin(),l1.end(),ostream_iterator<int>(cout," "));
cout<<endl;
cout<<"复2制?时?移?除y所?有D等?于?的?元a素?"<<endl;
it1=remove_copy(l1.begin(),l1.end(),l2.begin(),2);
copy(l2.begin(),it1,ostream_iterator<int>(cout," "));
cout<<endl;
cout<<"复2制?时?移?除y所?有D大?于?的?元a素?"<<endl;
it1=remove_copy_if(l1.begin(),l1.end(),l3.begin(),bind2nd(greater<int>(),5));
copy(l3.begin(),it1,ostream_iterator<int>(cout," "));
cout<<endl;
cout<<"移?除y所?有D连?续?重?复2的?元a素?"<<endl;
it1=unique(l3.begin(),l3.end());
copy(l3.begin(),it1,ostream_iterator<int>(cout," "));
cout<<endl;
cout<<"移?除y所?有D的?连?续?的?大?于?的?元a素?"<<endl;
it1=unique(l3.begin(),l3.end(),mylessthan);
copy(l3.begin(),it1,ostream_iterator<int>(cout," "));
cout<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: