STL算法库-删除算法

来源:互联网 发布:合肥美工招聘 编辑:程序博客网 时间:2024/05/16 18:56
一、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;}


0 0
原创粉丝点击