ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • C++ Utility (function)
    카테고리 없음 2014. 2. 26. 00:48

    Function 함수 포인터나 람다 표현식등 아무것이나 담아서 호출가능하다.

     

    Function <R(argtype1, argtype2, ....)> 으로 표현한다.

     

     

     

    #include <iostream>

    #include <functional>

    #include <string>

    #include <vector>

    #include <algorithm>

     

    using namespace std;

     

    void func(int num, const string& str)

    {

        cout << "\nnum " << num << endl <<"string " << str << endl;

    }

     

    bool isEven(int num)

    {

        return num%2==0;

    }

     

    void print(int n)

    {

        cout << n << " ";

    }

     

    // 함수 포인터를 함수 인자로 받는다.

     

    void process(const vector<int>& vec, function<void(int)> f)

    {

    //    int cnt = count_if(vec.begin(), vec.end(), f);

    //    print( cnt);

        for (auto&i : vec)

            f(i);

    }

    void main()

    {

    //    function<void(int, const string&)> f1 = func;

        vector<int> vNum;

        for (int i=0;i<10;++i)

            vNum.push_back(i);

        process(vNum, print);

    //    auto f1 = isEven;

    //    int cnt = count_if(vNum.begin(), vNum.end(), f1);

    //    f1(1,"test");

        int cnt=0;

    // 람다 표현식을 사용하는

     

        process(vNum, [&cnt](int num){cnt+=isEven(num);});

        cout << "even number counter " << cnt << endl;

     

        process(vNum, [&cnt](int num){cnt+=num;});

        cout << "sum number " << cnt << endl;;

        return;

    }

Designed by Tistory.