Post

[STL] Tuple

Tuple은 Pair의 확장형으로, 개인적으로는 3개 이상의 원소를 하나로 묶고 싶으면 무조건 Tuple을 쓴다.
Tuple의 단점은 가져오는것이 복잡해보인다는 것인데, 사실 익숙해지면 별로 복잡하지도 않을 뿐더러 원소가 4개 이상이 되면 v[0].first.second.first와 같은 짓을 해야 하기 때문에 개인적으로는 그냥 get으로 한번에 가져오는게 훨씬 깔끔하고 좋지 않나… 또 하나의 단점으로는 어차피 algolithm헤더에 아마 포함이 되어있기 때문에 tuple을 따로 include해서 사용한 적이 없는데, 가끔 어느 헤더가 없어서 나는것인지 모를 오류가 발생한다. 그래서 추가했던 코드가

1
#include <functional>

이것인데, 이는 방금 전까지 1시간가량 분노를 표하게 했던 빌드오류의 원인이었다. 나는 평소 tuple을 쓸 때 따로 make_tuple()을 쓰지 않고 배열로 묶어서만 사용하는데, functional을 include하지 않을 경우 변환이 실패해서 오류를 뱉는다. 물론 대회에서는 잡다한것까지 다 include 한 후 사용하겠지만, 반드시.. 잊지 말기를… 또 n시간을 의미없이 흘려보내지 말기를..

1
typedef tuple<int, int, int> T;

위의 기본형을 항상 가지고 있다가 필요시에 모양만 바꿔 사용하면 편하다.

원소를 가져오는 방법은,

1
2
tuple<int, int, int> t;
get<0>(t);

요런식으로 하면 된다. 인덱스는 0부터 시작한다.

This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.