Test Code/C++

[STL] algorithm for_each 예제

yaks101 2013. 12. 27. 09:36

/*

for_each는 algorithm 함수로서 인자로 함수나 클래스를 사용할 수 있다.

*/


#include <algorithm>

#include <vector>

#include <iostream>


using namespace std;


class Summation

{

private:

int sum;

public:

Summation() : sum (0) {}

void operator() (int i)

{

sum += i;

}

        operator int ()

        {

        return  static_cast <int> (sum);

        }

};


void display(int i)

{

cout << i << endl;

}


int main()

{

  // system 함수에 도스 명령어 실행

const char* szArr[] = {"dir","cls","ver"};

int iSize = sizeof(szArr)/sizeof(char*);

for_each(szArr, szArr+iSize, system);

        //  display 함수 실행

vector<int> vec;

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

{

vec.push_back(i);

}

for_each(vec.begin(),vec.end(),display);

        // Summation 클래스 사용 

int iRet = for_each(vec.begin(),vec.end(),Summation());

cout << "Summation = " << iRet << endl;

return 0;

}