#include <vector>
#include <iostream>
#include <cstdlib>
#include <cstring>
int main()
{
std::vector<int(*)(const char*)> processors;
processors.push_back(std::atoi);
processors.push_back(reinterpret_cast<int(*)(const char*)>(std::strlen));
const char data[] = "1.23";
for (std::vector<int(*)(const char*)>::iterator it = processors.begin(); it !=
processors.end(); ++it)
std::cout << (*it)(data) << std::endl;
}
要求改成lambda的方式,各位请看,对比一下.
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <vector>
#include <boost/lambda/lambda.hpp>
#include <boost/function.hpp>
int main()
{
using namespace boost::lambda;
//这里是个int(const char *)类型的函数 vector
std::vector<boost::function<int(const char *)> > prosessors;
prosessors.push_back(std::atoi);
prosessors.push_back(std::strlen);
char data[]="1.45";
std::for_each(
prosessors.begin(),
prosessors.end(),
boost::lambda::var(std::cout)<<_1(data)<<'\n'
);
return 0;
}