더북(TheBook)

출력 결과는 다음과 같다.

Square roots are:

1.22474 1.58114 1.87083 2.12132 2.34521

 

Cubes are:

3.375 15.625 42.875 91.125 166.375

 

Squares are:

3.375 15.625 42.875 91.125 166.375

 

4th powers are:

11.3906 244.141 1838.27 8303.77 27680.6

지금까지 설명한 내용을 이해했다면 예제가 이해하기 어렵지는 않을 것이다. transform() 알고리즘이 처리할 입력 데이터는 data 배열에 들어 있다. 네 번의 transform() 호출에서 처음 두 인수는 data 배열의 시작 반복자와 끝 반복자가 된다. transform() 알고리즘 출력의 목적지는 데이터를 출력 스트림에 쓰는 출력 스트림 반복자로 지정한다. ostream_iterator 생성자의 두 번째 인수는 각 값 뒤에 쓸 구분자를 지정한다.

첫 번째 transform() 호출은 마지막 인수로 Root 객체를 전달한다. Root 클래스는 인수의 제곱근을 반환하는 operator()() 멤버를 정의했다. 두 번째 transform() 호출은 입력값의 세제곱을 계산하는 람다 표현식을 인수로 작성한 것이다. 세 번째 transform() 호출은 std::function 타입 템플릿이 동작하는 것을 보여준다. 네 번째 transform() 호출은 람다 함수가 다른 람다 함수를 호출하는 것을 보여준다. 이제 알고리즘에 함수를 인수로 전달해야 할 때 여기서 소개한 방법을 적용할 수 있을 것이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.