【VC开源代码栏目提醒】:本文主要为网学会员提供functional.cpp,希望对需要functional.cpp网友有所帮助,学习一下!
// functional.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream.h>
#include <deque>
#include <algorithm>
#include <functional>
#include <cstring>
using namespace std;
typedef deque<int> TestDeque;
typedef TestDeque::iterator TestDequeIt;
typedef deque<char*> StringDeque;
void OutputDeque (TestDeque deque, char*);
void main( )
{
TestDeque a,b,c(10);
int i;
for ( i = 1 ; i < 11 ; i++ )
{
a.push_back( i*4 );
}
for ( i = 1 ; i < 11 ; i++ )
{
b.push_back( i*7 );
}
//使用modulus函数对象;
transform (a.begin( ), a.end( ), b.begin( ), c.begin ( ), modulus<int>() );
//输出结果
OutputDeque (a,"a");
OutputDeque (b,"b");
cout<<endl<<"a队列和b队列各元素进行modulus计算后的结果放在c队列中"<<endl;
OutputDeque (c,"c");
//使用binder2nd复合函数对象;
int result;
result = count_if( a.begin( ), a.end( ), bind2nd( greater<int>( ), 10 ) );
cout <<endl<< "队列a中大于10的元素有 "<< result<< "个" << endl;
//使用指针函数对象
StringDeque d;
StringDeque::iterator It,RIt;
d.push_back ( "This" );
d.push_back ( "is" );
d.push_back ( "an" );
d.push_back ( "example" );
d.push_back ( "on" );
d.push_back ( "functional." );
cout<<endl<<"队列d的元素为:"<<endl;
for ( It = d.begin( ) ; It != d.end( ) ; It++ )
cout << *It << " ";
cout << endl;
RIt = find_if( d.begin( ), d.end( ), not1 ( bind2nd (ptr_fun ( strcmp ), "example" ) ) );
if ( RIt != d.end( ) )
{
cout << "队列d中找到了'example'这个字符串."<<endl<<endl;
cout << "其下一个字符串是:" << *++RIt << "." << endl;
}
}
//显示双队列内容
void OutputDeque (TestDeque deque, char *name)
{
//创建一个迭代器
TestDeque::iterator mydeque;
cout <<"双队列"<< name <<"的内容为 : ";
for(mydeque = deque.begin(); mydeque != deque.end();mydeque++)
{
cout << *mydeque <<" ";
}
cout<<endl;
}
上一篇:
frmSetprice.frm
下一篇:
法律专业开题报告范文