1. 结构体模版:
如下面的struct show, 模版参数为S, 生成一个模版对象函数,输出为1,2,3.
template <typename S>
struct show
{
void operator()(const S& element) const
{
cout<<element<<endl;
}
};
int main()
{
int a[3]={1,2,3};
for_each(a,a+4,show<int>()); //先使用结构体模版定义一种结构体show<int>,再通过此结构体默认构造函数创建一个对象,调用其函数对象
int n;
cin>>n;
return 0;
}
2. 函数对象
如,下面的Add结构体定义了一个sum变量、一个不带参数的默认构造函数、一个带参数的构造函数,以及一个函数对象(对结构体变量修改)。
struct Add
{
int sum;
Add()
{
}
Add( int x)
{
sum=x;
}
int operator()(int y)
{
return sum+y