#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++ 仿函数函数对象使用
最新推荐文章于 2024-05-16 07:58:10 发布
本文详细介绍了如何使用C++ STL中的函数对象进行容器元素的修改和遍历操作,包括addSelfVector和addOtherVector的定义及应用,以及transform和for_each函数的使用方法。
2409

被折叠的 条评论
为什么被折叠?



