본문으로 바로가기

[C++] 추가 정리

category Algorithm/C++ STL 2018. 8. 20. 19:36


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<intint>> 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


📝2555번 문제 (생일 출력하기)

📝10871번 문제 (X보다 작은 수)

📝10870번 문제 (피보나치수 5)

📝10869번 문제 (사칙연산)


🔥사칙연산문제 (+ 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