C++
[C++] Auto, Pair, Tuple 자료형과 Range-based for
도리닥닥
2021. 12. 14. 17:30
728x90
auto
- 컴파일러가 타입을 추론하여 타입을 결정
- 변수의 타입을 명확하게 알 수 있어야 함.
-> 반드시 초기화가 필요
//////////////////////////////// << (ERROR)
auto a, b; // <- init X
cin >> a >> b;
cout << a << b << '\n';
//////////////////////////////// << (CORRECT)
auto a = 0, b = 0; // <- init
cin >> a >> b;
cout << a+b << '\n';
Range-based for
- 배열의 모든 요소를 검색.
- for ( 배열의 요소 값 : 배열 주소) { }
int a[] = {1,2,3,4,5};
for(int x : a) {
cout << x << ',';
}
cout << '\n';
result : 1,2,3,4,5,
pair
- 두 자료형을 묶을 수 있다. (항상 2개)
- 첫 번째 자료는 first, 두 번째 자료는 second 로 접근.
- make_pair를 이용하거나, 생성자를 이용해서 만들 수 있음.
- #include<utility>에 있으나 algorithm, vector와 같은 헤더파일에서 이미 포함하고 있기에
- 별도로 include 하는 일은 드뭄.
pair<int, int> p1;
p1 = make_pair(10,20);
p1 - pair<int, int>(30, 40);
pair<int, int> p2(50, 60);
tuple
- pair와 같지만 여러 개를 묶을 수 있다.
- get을 이용하여 index로 접근.
- get의 index를 변수 형태로 처리 할 수 없음.
tuple<int, int, int> t1 = make_tuple(1,2,3);
cout << get<0>(t1) << ' ';
cout << get<1>(t1) << ' ';
cout << get<2>(t1) << '\n';
////////////////////////////////////// <- get의 index를 변수 형태로 처리할수 없음.
for(int i = 0; i < 3; i++) {
cout << get<i>(t1) << '\n';
}