STL算法------查找3
1.search()
2.find_end()
注意:
这两个算法是一对
第二个算法应该叫search_end(),但被命名为find_end()
#include <iostream>
#include <algorithm>
#include <vector>
#include <list>
using namespace std;
bool CheckEven( int elem, bool even )
{
if(even)
return elem%2==0;
else
return elem%2==1;
}
int main( int argc, char** argv )
{
vector<int> vec;
list<int> lst;
for( int i=0; i<9; ++i )
{
vec.insert(vec.end(), i );
}
for( int i=0; i<9; ++i )
{
vec.insert(vec.end(), i );
}
for( int i=3; i<7; ++i )
{
lst.insert(lst.end(), i );
}
for(vector<int>::const_iterator citr=vec.begin(); citr!=vec.end(); ++citr)
{
cout<<*citr<<' ';
}
cout<<endl;
for(list<int>::const_iterator citr=lst.begin(); citr!=lst.end(); ++citr)
{
cout<<*citr<<' ';
}
cout<<endl;
//search
vector<int>::iterator pos;
pos = search( vec.begin(), vec.end(), lst.begin(), lst.end() );
while( pos != vec.end() )
{
cout<<"find "<<distance(vec.begin(), pos)+1<<endl;
++pos;
pos = search( pos, vec.end(), lst.begin(), lst.end() );
}
//find_end
cout<<"use find_end"<<endl;
pos = find_end(vec.begin(), vec.end(), lst.begin(), lst.end() );
if( pos != vec.end() ){
cout<<"find "<<distance(vec.begin(), pos)+1<<endl;
}else{
cout<<"not find"<<endl;
}
//search_if
bool bEven[3] = {false, true, false};
pos = search(vec.begin(), vec.end(), bEven, bEven+3, CheckEven );
if( pos != vec.end() )
{
cout<<"find "<<distance(vec.begin(), pos)+1<<endl;
}else{
cout<<"not find"<<endl;
}
return 0;
}

浙公网安备 33010602011771号