요약 : pair 와 tuple 보다 구조체(Struct) 를 사용하면 보다 효율적이고 직관적인 알고리즘 코딩이 가능합니다.
우선 pair 와 tuple 의 장단점을 조금 생각해보자면
pair는 원소의 접근이 편하지만 공간이 두 개로 한정적입니다.
tuple은 공간이 무한하지만 접근이 불편합니다.
이러한 이유에서 저는 상황에 따라서 사용했습니다.
그러다가 최근에 구조체(Struct)를 사용하게 됬습니다.
구조체는 이름만으로도 무겁고 귀찮게 느껴집니다.
예를 들어 봅시다.
왼쪽, 오른쪽, 위, 아래의 4가지 정보를 한 세트로 하는
알고리즘을 구현한다고 생각해봅시다.
아래의 두 가지 구현에서 느끼셔야 할 부분은 세 가지 입니다.
1. 구조체 구현이 얼마나 간단한가.
2. 원소 추출이 얼마나 간편한가.
3. 구현된 코드가 얼마나 직관적인가.
< tuple을 통한 구현 >
int main() {
///////// 원소삽입 //////////
int l, r, u, d;
auto T = make_tuple(l, r, u, d);
//////// 원소추출 ///////////
int nl, nr, nu, nd;
tie(nl, nr, nu, nd) = T;
cout << "아래 : " << nd << endl;
return 0;
}
< 구조체를 통한 구현 >
struct direction {
int left;
int right;
int up;
int down;
};
int main() {
///////// 원소삽입 //////////
int l, r, u, d;
direction T = { l, r, u, d };
//////// 원소추출 ///////////
cout << "아래 : " << T.down << endl;
return 0;
}
해당 코드만 봐서는 사실 제가 의도한 바를 모두 알기 힘들 겁니다.
하지만 알고리즘을 구현할 때 사용해보시면
분명히 간편하고 직관적임을 느끼실 수 있을 겁니다.