카테고리 없음

C++ Utility (function)

F.xavier 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;

}