算法库(三)

来源:互联网 发布:nginx 禁止ip频繁访问 编辑:程序博客网 时间:2024/06/02 07:01

 

1.      for_each(beg,end,f ):按照f方式遍历区间

2.      transform(beg,end,dest,f ):按照f方式遍历区间,将得到的结果写入dest

void print( string strvlaue )

{

         cout<<strvlaue<<"\n";

}

stringoperatorString( string strValue )

{

         strValue += "1";

         returnstrValue;

}

int main()

{

         vector<string> vec_string;

         for( int i = 0;i <= 4;++ i )

         {

                   charch[10];

                   memset( ch,0,10 );

                   _itoa_s( i,ch,10 );

                   vec_string.push_back( ch );

         }

 

         //for_each(vec_string.begin(),vec_string.end(),print );

         for_each(vec_string.begin(),vec_string.end(),operatorString );

         for_each( vec_string.begin(),vec_string.end(),print);

 

         vector<string> vec_insert;

         transform(vec_string.begin(),vec_string.end(),back_inserter( vec_insert ),operatorString);

 

         for_each(vec_insert.begin(),vec_insert.end(),print );

         system("pause");

         return0;

}

3.       count:统计某元素出现的次数

class A

{

public:

         A()

         {

         }

         A( intno,string name ):iNo( no ),strName( name ){}

         bool operator==( constA& a )

         {

                   returna.strName == strName;

         }

         string retName()

         {

                   returnstrName;

         }

         bool operator<( constA& a )

         {

                   returniNo < a.iNo;

         }

         friendostream& operator<<( const ostream output,constA& a );

private:

         intiNo;

         string strName;

};

ostream& operator<<( ostream output,A& a )

{

         returnoutput<<a.retName();

}

int main()

{

         vector<A> lst_A;

         A a1( 1,"22");

         lst_A.push_back( a1 );

 

         A a2( 2,"33");

         lst_A.push_back( a2 );

 

         A a3( 3,"44");

         lst_A.push_back( a3 );

 

         A a4( 4,"55");

         lst_A.push_back( a4 );

 

         A a5( 5,"66");

         lst_A.push_back( a5 );

         lst_A.push_back( a5 );

         lst_A.push_back( a5 );

         lst_A.push_back( a5 );

 

         intiCount = count( lst_A.begin(),lst_A.end(),A( 0,"66") );

 

         system("pause");

         return0;

}

transform五个参数的版本:

int coll[]={ 5,4,6,7,1,2,3 };

//transform(coll,coll + 6,coll,negate<int>( ));

transform( coll,coll+ 6,coll,coll,plus<int>() );

copy( coll,coll +6,ostream_iterator<int>( cout,") );