[C++] std::for_each

Programming 2016. 12. 12. 18:13


많은 언어에 존재하는 for-each 구문이다.

C++ 공부도 할 겸 공부한 내용을 정리하면서 이런 글을 자주 작성할 것 같다.


for_each는 <algorithm> 내에 정의되어 있다.

범위를 정해서 루프를 도는 for문과 유사하지만 다른 점은 포인터를 이용해 시퀀스의 변수에 접근한다는 점이다.

따라서 for문처럼 시작과 끝을 정하는 것이 필수적이다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "stdafx.h"
#include <algorithm>        // for `std::for_each`
#include <vector>            // for `std::vector` 
#include <iostream>            // for `std::cout`
 
void square(int& num) {
    num *= num;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    std::vector<int> int_vector = { 13579 };
    std::for_each(int_vector.begin(), int_vector.end(), square);
    for (auto num : int_vector)
        std::cout << num << " ";
    std::cout << std::endl;
    return 0;
}
cs


첫 번째 인자로 int형 vector의 시작인 begin()을 주었고, 두 번째 인자로 마지막 변수 다음 값인 end()를 주었다.

각각 시작과 끝을 나타내며, 세 번째 인자에는 함수 객체를 넣어 주어야 한다.


for_each를 통해 참조되는 vector의 각 멤버들을 레퍼런스로 넘겨 이를 제곱하고 있으므로 for_each문이 끝난 이후 모든 멤버들이 제곱되어 있을 것이다.


실제 출력 결과를 확인해 보면 다음과 같이 예상한대로 되어 있는 것을 볼 수 있다.



블로그 이미지

__미니__

E-mail : skyclad0x7b7@gmail.com 나와 계약해서 슈퍼 하-카가 되어 주지 않을래?

,