#include <iostream>
#include <vector>
#include<algorithm>
using namespace std;
class PrintVector
{
public:
void operator()(int var)
{
cout<<var<<endl;
}
};
class AddSelfVector
{
public:
void operator()(int& var)
{
var +=100;
}
};
class AddOtherVector
{
public:
int operator()(int var)
{
return var+100;
}
};
void test1()
{
vector<int> vt;
vt.push_back(10);
vt.push_back(20);
vt.push_back(30);
vt.push_back(40);
//通过for_each函数和函数对象来达到遍历效果
for_each(vt.begin(), vt.end(), AddSelfVector());
for_each(vt.begin(), vt.end(), PrintVector());
}
void test2()
{
vector<int> vt;
vt.push_back(10);
vt.push_back(20);
vt.push_back(30);
vt.push_back(40);
vector<int> vt1;
vt1.resize(vt.size());//申请对应空间,默认值为0
for_each(vt1.begin(), vt1.end(), PrintVector());
//遍历容器vt中的每个元素后执行AddOtherVector函数后copy到新容器vt1中
transform(vt.begin(), vt.end(), vt1.begin(), AddOtherVector());
for_each(vt1.begin(), vt1.end(), PrintVector());
}
int main()
{
test2();
return 0;
}
C++ 仿函数函数对象使用
最新推荐文章于 2023-01-02 10:20:09 发布