Range-based for
for ( for-range-declaration : expression ) { statement }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #include <iostream> #include <vector> #include <algorithm> using namespace std; int main(int argc, const char * argv[]) { vector<pair<int, int>> a = {{1,2},{3,4},{5,6}}; for(auto &p : a){ cout << p.first << ' ' << p.second << endl; } // 1 2 // 3 4 // 5 6 string str = "Hello"; for(auto x : str){ cout << x << endl; } // H // e // l // l // o } | cs |
Lamda Function
[변수 캡쳐] (받을 Parameter) ->리턴타입 {Function}(넘길 Parameter)
[변수 캡쳐]
현재 함수에서 사용할 외부 변수들을 뜻함
만약 main함수에 있는 변수를 사용하고 싶다면?
[&var]을 통해 특정 변수만 참조한다
캡쳐에 &을 넣으면 선언하는 시점에서 바깥에 있는 변수를 모두 사용 가능!!
&은 참조이고, =는 복사이다
여러 개는 ,를 이용한다
(받을 Parameter)
함수에서 받는 인자들
->리턴타입
Return 해주는 타입을 지정
void의 경우 생략 가능!!
{함수}
내용을 정의하는 몸체영역
(넘길 Parameter)
호출하는 함수에서 넘겨주는 값들
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include <iostream> #include <vector> #include <algorithm> using namespace std; int main(int argc, const char * argv[]) { // Lamda Function1 cout << [](int x,int y) { return x+y; }(1,2) << endl; // Lamda Function2 auto sum = [](int x,int y) { return x+y; }; cout << sum(1,2) << endl; } | cs |
#include <functional>
function <리턴타입 (콤마로 구분한 인자의 타입들)>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include <iostream> #include <vector> #include <algorithm> #include <functional> using namespace std; int main(int argc, const char * argv[]) { function<int(int,int)> sum = [](int x,int y){ return x+y; }; cout << sum(1,2) << endl; } | cs |
🔥사칙연산문제 (+ vector의 자료형을 function으로 선언)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | #include <iostream> #include <vector> #include <algorithm> #include <functional> using namespace std; int main(int argc, const char * argv[]) { vector<function<int(int,int)>> v; int a,b; cin >> a >> b; v.push_back([](int x,int y){ return x+y; }); v.push_back([](int x,int y){ return x-y; }); v.push_back([](int x,int y){ return x*y; }); v.push_back([](int x,int y){ return x/y; }); v.push_back([](int x,int y){ return x%y; }); for(auto &x : v){ cout << x(a,b) << endl; } } | cs |
'Algorithm > C++ STL' 카테고리의 다른 글
[C++] Algorithm 정리 (0) | 2018.08.16 |
---|---|
[C++] String 정리 (0) | 2018.08.16 |
[C++] STL 정리 (0) | 2018.08.08 |