简化以下程序,将函数对象 divide_by 转换为一个函数,并将 for 循环替换为用一个标准的 C++ 算法来输出数据

来源:互联网 发布:gta5捏脸数据男周星驰 编辑:程序博客网 时间:2024/06/06 09:04
#include <algorithm> #include <functional> #include <vector> #include <iostream> class divide_by   : public std::binary_function<int, int, int> { public:   int operator()(int n, int div) const   {     return n / div;   }   for (std::vector<int>::iterator it = numbers.begin(); it != numbers.end(); ++it) }; int main() {   std::vector<int> numbers;   numbers.push_back(10);   numbers.push_back(20);   numbers.push_back(30);   std::transform(numbers.begin(), numbers.end(), numbers.begin(), std::bind2nd(divide_by(), 2));     std::cout << *it << std::endl; } 
#include "boost/bind.hpp"#include "boost/function.hpp"#include "boost/lambda/lambda.hpp"#include <algorithm> #include <functional> #include <vector> #include <iostream> class divide_by : public std::binary_function<int, int, int>{public: int operator()(int n, int div) const {  return n / div; }};int main(){ std::vector<int> numbers; numbers.push_back(10); numbers.push_back(20); numbers.push_back(30); boost::function<int(int, int)> f = divide_by(); std::transform(numbers.begin(), numbers.end(), numbers.begin(), boost::bind(f,_1, 3)); std::for_each(numbers.begin(), numbers.end(), std::cout<<boost::lambda::_1<<"\n");}
阅读全文
0 0
原创粉丝点击