많은 언어에 존재하는 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 = { 1, 3, 5, 7, 9 }; 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문이 끝난 이후 모든 멤버들이 제곱되어 있을 것이다.
실제 출력 결과를 확인해 보면 다음과 같이 예상한대로 되어 있는 것을 볼 수 있다.
'Programming' 카테고리의 다른 글
[C++] 알아두면 좋은(?) C++ 지식들 (0) | 2016.12.13 |
---|---|
[C++] 얕은 복사, 깊은 복사, 복사 생성자 (0) | 2016.12.13 |
[Python] Pacro : Python 기반 매크로 프로그램 (5) | 2016.11.28 |
[C++] CreateMutex (2) | 2016.11.22 |
[PyQt4] 0x07. WebBrowser (0) | 2016.11.21 |