◎ 요소 변경
ㅇ fransform()
- 함수 객체를 적용한 후 그 결과를 다른 구간에 복사한다.
- 단항 함수를 취하는 버젼과 이항 함수를 취하는 버젼 두가지가 있다.
OutIt transform(InIt first, InIt last, OutIt result, UniOp op);
OutIt transform(InIt1 first1, InIt1 last1, InIt2 first2, OutIt result, BinOp op);
- 단항 함수 : 반복자 구간의 요소를 이 함수로 넘겨 리턴된 값을 result 반복자 위치에 대입한다.
- 이항 함수 : 두 반복자 구간의 대응되는 값을 함수로 념겨 리턴되는 값을 result 반복자 위치에 대입한다.
- 처리한 결과는 result로 출력하기 때문에 원본이 그래도 유지된다. (result가 원본이 될수도 있다.)
1 #include <iostream>
2 #include <vector>
3 #include <algorithm>
4 #include <functional>
5
6 using namespace std;
7
8 template<typename C>
9 void dump(const char *desc, C c) 10 {
11 cout.width(12);cout << left << desc << "==> ";
12 copy(c.begin(),c.end(),ostream_iterator<typename C::value_type>(cout," "));
13 cout << endl;
14 }
15
16
17 int multi2(int a)
18 {
19 return a*2;
20 }
21
22 int add(int a, int b)
23 {
24 return a+b;
25 }
26
27 void main()
28 {
29 vector<int> src(5), dest(5), sum;
30 int i;
31
32 for (i=0;i<5;i++) src[i]=i;
33 transform(src.begin(),src.end(),dest.begin(),multi2);
34 dump("src",src);
35 dump("dest",dest);
36 transform(src.begin(),src.end(),dest.begin(),back_inserter(sum),add);
37 dump("sum",sum);
38 }
'[ C/ C++ 프로그래밍 ] > [ STL ]' 카테고리의 다른 글
[ 혼연 정리 ] STL 알고리즘 - 9 [ 수치 알고리즘 ] (2) | 2010.06.24 |
---|---|
[ 혼연 정리 ] STL 알고리즘 - 8 [ 정렬 알고리즘 ] (2) | 2010.06.24 |
[ 혼연 정리 ] STL 알고리즘 - 6 [ 변경 알고리즘 ] (1) | 2010.06.24 |
[ 혼연 정리 ] STL 알고리즘 - 5 [ 변경 알고리즘 ] (0) | 2010.06.24 |
[ 혼연 정리 ] STL 알고리즘 - 4 [ 변경 알고리즘 ] (1) | 2010.06.24 |