Function object

来源:互联网 发布:淘宝网页点击没反应 编辑:程序博客网 时间:2024/06/02 10:38

http://en.wikipedia.org/wiki/Function_object


#include <iostream>#include <vector>#include <algorithm>#include <functional>using namespace std;class functor {public:        void operator()(int k) {                cout << "k = " << k << '\n';        }};struct inc {        int operator()(int k) {                return k + 1;        }};struct times {        int operator()(int a, int b) {                return a * b;        }};void output(int a) {        cout << a << endl;}int main() {        vector<int> v;        for (int i = 0; i < 5; ++i) {                int t;                cin >> t;                v.push_back(t);        }        for_each(v.begin(), v.end(), functor());        for_each(v.begin(), v.end(), output);        for_each(v.begin(), v.end(), [](int k) { cout << k; }); // anonymous function objects        puts("");        vector<int> v1(v.size());        transform(v.begin(), v.end(), v1.begin(), inc());        for_each(v1.begin(), v1.end(), output);        vector<int> v2(v.size());        transform(v.begin(), v.end(), v1.rbegin(), v2.begin(), times());        for_each(v2.begin(), v2.end(), functor());        vector<int> v3(v.size());        transform(v.begin(), v.end(), v1.begin(), v3.begin(), multiplies<int>()); // STL default function objects        for_each(v3.begin(), v3.end(), output);        system("pause");        return 0;}


running result:

3 4 5 6 7k = 3k = 4k = 5k = 6k = 7345673456745678k = 24k = 28k = 30k = 30k = 281220304256






原创粉丝点击