#include <algorithm>
2020. 12. 1. 00:25ㆍ컴퓨터 수업/C++
#include <iostream>
#include <functional>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
vector<int> v1{1, 2, 3, 4};
for (int elem : v1) {
cout << elem << '\t';
}
cout << endl;
//for_each(iter_begin, iter_end, lambda)
// -특징1 : lambda함수는 각 element에 대해 수행, return type이 없음 (void)
// -특징2 : 외부 변수를 for_each에 사용할 때, closure를 사용
for_each(begin(v1), end(v1), [](int elem) { cout << elem << '\t'; });
cout << endl;
for_each(begin(v1), end(v1), [](int &elem) { elem++; });
for_each(begin(v1), end(v1), [](int elem){cout << elem << '\t';});
int a = 10;
for_each(begin(v1), end(v1) , [a](int &elem){elem *= a;});
vector<int> v2(5);
//copy() : src의 element를 dst(destination)로 복사 src(v1)->(element)->dst(v2)
//copy( src_iter_begin, src_iter_end, dst_iter_begin)
// v1 : {20, 30, 40 ,50}
// v2 : { 0, 0, 0, 0, 0}
copy(begin(v1), end(v1), begin(v2));
for_each(begin(v2), end(v2), [](int elem){cout << elem << '\t';});
cout << endl;
//copy(begin(v1)+1, end(v1)-1 , begin(v2) +1 ) 과 같은 형태도 가능
// transform() : src의 element를 *변환해서* dst로 복사 (for_each + copy)
// transform(src_iter_begin, src_iter_end, dst_iter_begin, lambda)
// - 특징 : lambda의 return type이 존재 (for_each의 lambda는 return type이 void)
transform(begin(v1), end(v1), begin(v2), [](int elem){return elem*elem;});
for_each(begin(v2), end(v2), [](int elem){cout << elem << '\t';});
cout << endl << endl;
return 0;
}
'컴퓨터 수업 > C++' 카테고리의 다른 글
Lambda Function (0) | 2020.11.30 |
---|---|
템플릿★ (0) | 2020.11.19 |
템플릿(임시) (0) | 2020.11.19 |
virtual , 업/다운 캐스팅, 정적타입바인딩, 추상클래스 ★ (0) | 2020.11.10 |
C++ 상속 (0) | 2020.11.05 |