// sort.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<iostream>
#include<algorithm>
#include<vector>
#include<list>
#include<functional>
#include<ctime>
using namespace std;
//全局函数
int cube(int n)
{
return (n*n);
};
//函数对象
class produce
{
public:
produce():max(0),min(110){};
int operator()(int n) //运算符重载
{
if(n>max)
max=n;
if(n<min)
min=n;
return (n*n*n);
}
int max;
int min;
};
int main()
{
const int count=10;
srand(time(0));
vector<int>v,v2;
v.reserve(count);
v2.reserve(count);
for(int i=0;i<count;i++)
v.push_back(rand()%20);
cout<<"数列例如以下:"<<endl;
copy(v.begin(),v.end(),ostream_iterator<int>(cout," "));
//调用全局函数
transform(v.begin(),v.end(),back_inserter(v2),cube);
cout<<endl;
copy(v2.begin(),v2.end(),ostream_iterator<int>(cout," "));
//调用函数对象
vector<int>().swap(v2);//清零
transform(v.begin(),v.end(),back_inserter(v2),produce());
cout<<endl;
copy(v2.begin(),v2.end(),ostream_iterator<int>(cout," "));
//这里不能用transform,因back_inserter的问题
vector<int>().swap(v2);//清零
produce p=for_each(v.begin(),v.end(),produce());
cout<<endl;
copy(v2.begin(),v2.end(),ostream_iterator<int>(cout," "));
cout<<endl;
cout<<"max="<<p.max<<" min="<<p.min<<endl;
getchar();
return 0;
}
transform 函数对象
最新推荐文章于 2022-08-23 16:12:51 发布